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