广播一个现场摄像头流

问题描述:

我想记录我的摄像头并将其直播到其他客户端。广播一个现场摄像头流

我可以轻松地显示我的摄像头在视频标签在同一个页面,这样的事情:

function initialize() { 
    video = $("#v")[0]; 
    width = video.width; 
    height = video.height; 

    var canvas = $("#c")[0]; 
    context = canvas.getContext("2d"); 

    nav.getUserMedia({video: true}, startStream, function() {}); 
} 

function startStream(stream) { 
    video.src = URL.createObjectURL(stream); 
    video.play(); 

    requestAnimationFrame(draw); 
} 

function draw() { 
    var frame = readFrame(); 

    if (frame) { 
    replaceGreen(frame.data); 
    context.putImageData(frame, 0, 0); 
    } 

    requestAnimationFrame(draw); 
} 

function readFrame() { 
    try { 
    context.drawImage(video, 0, 0, width, height); 
    } catch (e) { 
    return null; 
    } 

    return context.getImageData(0, 0, width, height); 
} 

但如何在流发送到服务器上,做一些图像处理,然后brodcast到其他客户端?

nodejs是最好的方法吗?你有一些阅读/库来推荐我吗?

目前有几个工作草案,但我认为目前在浏览器中直播视频的最佳方式是使用Flash ActionScript。当然,客户端仍然需要安装插件才能在浏览器中运行应用程序。请注意,在这种情况下,您不能使用Apache Web服务器来播放实况视频。您将需要媒体服务器,如Red5(免费),Wowza或Adobe Media Server。

另外,看看你是否能找到一些帮助here

“的WebRTC(其中RTC表示实时通信)是一种技术,使音频/视频流和数据浏览器客户端(对等)之间共享。作为一套标准,WebRTC为任何浏览器提供共享应用程序数据和执行对等电话会议的能力,而无需安装插件或第三方软件。 '

+1

WebRTC和getUserMedia非常容易使用,我不知道为什么有人会推荐Flash这些天。获取数据服务器端是非常棘手的,但Flash也是如此,特别是如果你想做任何额外的处理。 – Brad 2015-01-19 23:02:27