Javascript WebRTC:如何将网络摄像头数据作为数据流获取?

Javascript WebRTC:如何将网络摄像头数据作为数据流获取?,javascript,webcam,webrtc,Javascript,Webcam,Webrtc,我有一个简单的网页,你可以流你的摄像头。我想将此流发送到某个地方,但显然我无法真正访问流本身。我有以下代码来运行流: navigator.webkitGetUserMedia({video: true}, gotStream, noStream); 在gotStream中,我尝试了很多方法来“重定向”其他地方的流,例如: function gotStream(stream) { stream_handler(stream) //other stuff to show we

我有一个简单的网页,你可以流你的摄像头。我想将此流发送到某个地方,但显然我无法真正访问流本身。我有以下代码来运行流:

navigator.webkitGetUserMedia({video: true}, gotStream, noStream);
在gotStream中,我尝试了很多方法来“重定向”其他地方的流,例如:

function gotStream(stream) {   
    stream_handler(stream)
    //other stuff to show webcam output on the webpage
}

但是显然,
gotStream
函数在开始时仅被调用一次,即用户授予网络摄像头流媒体的权限。此外,
stream
变量不是流本身,而是一个具有某些属性的对象。我应该如何访问流本身并将其重定向到我想要的任何地方

编辑:您可能熟悉webglmeeting,这是一种显然是在WebRTC之上开发的face2face对话。我认为脚本以某种方式将数据流从一点发送到另一点。我想通过首先理解如何获取数据流来实现同样的目的


重新编辑:我不想转换为图像并发送后者,我想处理数据流本身。

如果你想将相机压缩到PNG或JPG格式的某个地方,那么我会像这样使用
canvas

HTML

<video id="live" width="320" height="240" autoplay></video>
<canvas width="320" id="canvas" height="240" style="display:none;"></canvas>
var video = $("#live").get()[0];
var canvas = $("#canvas");
var ctx = canvas.get()[0].getContext('2d');

navigator.webkitGetUserMedia("video",
        function(stream) {
            video.src = webkitURL.createObjectURL(stream);
        }
)
     setInterval(
        function () {
            ctx.drawImage(video, 0, 0, 320,240);
                var data = canvas[0].toDataURL("image/jpeg");   
  },1000);

谢谢你的建议,但不是。我想访问它使用的任何流(无论如何字节)来获取它,并通过网络发送它。我不想使用图形,因为我对通过网络发送IMG不感兴趣,而是对缓冲区本身感兴趣。好的,你必须看一下这个,谢谢你的建议,但我不想使用WebRTC标准发送流,我正在尝试另一种方式,为此我需要字节流:(.Hi Maisiar,我想做一些类似的事情,你有没有找到解决问题的方法?Hello@jpihl,不幸的是没有。每当我需要这样做时,我只需拍摄网络摄像头所在画布的快照,并通过WebRTC数据通道将其作为字符串发送。如果你找到更好的解决方案,请告诉我!)
var video = $("#live").get()[0];
var canvas = $("#canvas");
var ctx = canvas.get()[0].getContext('2d');

navigator.webkitGetUserMedia("video",
        function(stream) {
            video.src = webkitURL.createObjectURL(stream);
        }
)
     setInterval(
        function () {
            ctx.drawImage(video, 0, 0, 320,240);
                var data = canvas[0].toDataURL("image/jpeg");   
  },1000);