【问题标题】:WebRTC: how to get the webcam data as a stream of data?WebRTC:如何将网络摄像头数据作为数据流获取?
【发布时间】:2012-10-29 20:16:38
【问题描述】:

我有一个简单的网页,您可以在其中流式传输您的网络摄像头。我想把这个流发送到某个地方,但显然我不能真正访问流本身。我有这段代码来运行流:

navigator.webkitGetUserMedia({video: true}, gotStream, noStream);

在 gotStream 中,我尝试了很多方法来将此流“重定向”到其他地方,例如:

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

function gotStream(stream) {   
    stream.videoTracks.onaddtrack = function(track){
        console.log("in onaddtrack");
        stream_handler(track);
    }
    //other stuff to show webcam output on the webpage
}

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

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

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

【问题讨论】:

  • 嗨 Maisiar,我想做类似的事情,你有没有找到解决问题的方法?
  • 你好@jpihl,很遗憾没有。每当我需要这样做时,我只需拍摄网络摄像头所在画布的快照,然后通过 WebRTC 数据通道将其作为字符串发送。如果您找到更好的解决方案,请告诉我! :-)

标签: javascript webcam webrtc


【解决方案1】:

如果您打算将相机蒸到 PNG 或 JPG 格式的某个位置,那么我将像这样使用canvas

HTML

<video id="live" width="320" height="240" autoplay></video>
<canvas width="320" id="canvas" height="240" style="display:none;"></canvas>

JS (jQuery)

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);

【讨论】:

  • 感谢您的建议,但没有。我想访问它正在使用的任何流(无论如何都是字节)来获取它并做一些事情,比如通过网络发送它。我不想使用图形的东西,因为我对通过网络发送 imgs 不感兴趣,而是缓冲区本身。
  • 好的,你得看看这个html5rocks.com/en/tutorials/webrtc/basics
  • 感谢您的建议,但我不想使用 WebRTC 标准来发送流,我正在尝试使用另一种方式,为此我需要字节流: (.
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 2011-10-31
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
相关资源
最近更新 更多