Pul*_*Lab 39 javascript html5 webrtc
我正在尝试使用WebRTC在屏幕上显示视频输入作为实时馈送.我不是要尝试任何点对点通信或类似的东西,只是显示视频源.
我的笔记本电脑集成网络摄像头的代码工作得很好,但当我连接外部视频输入设备(在这种情况下,通过S-Video连接的旧摄像机使用StarTech转换器连接到USB输入 - 型号SVID2USB2NS)时,我什么也得不到.我在Chrome和FireFox都试过这个.
两种浏览器都可以找到视频设备并为我提供集成网络摄像头或USB设备(在本例中列为"USB 2820")的选择,因此在这种情况下他们都知道设备.
在Chrome中,当我尝试连接时,调用getUserMedia调用的"成功"回调,如果我.getVideoTracks()我找到MediaStreamTrack了回调的时刻,则MediaStreamTrack返回enabled= true和readyState= live.但是没有视频输入(只有一个黑色视频面板,Chrome浏览器标签中的小红色"录制"图标不会出现).如果我稍后检查MediaStreamTrack,我发现readyStatenow =" ended"(虽然启用仍然是真的).
在FireFox中,同样找到了设备,但是任何使用getUserMedia连接到它的尝试都会触发错误回调,并出现HARDWARE_UNAVAILABLE错误.
我的getUserMedia电话很简单:
navigator.getUserMedia({ audio: false, video: true }, _webRTCsuccessCallback, _webRTCerrorCallback);
Run Code Online (Sandbox Code Playgroud)
我的成功回调是(包括一些测试代码MediaStreamTrack立即检查,一秒后检查):
function _webRTCsuccessCallback(stream) {
window.stream = stream; // stream available to console
if (window.URL) {
_video.src = window.URL.createObjectURL(stream);
} else {
_video.src = stream;
}
var tracks = stream.getVideoTracks();
if (tracks[0]) {
console.log(tracks[0]);
setTimeout(function () { console.log(tracks[0]); }, 1000);
}
}
Run Code Online (Sandbox Code Playgroud)
(其中_video是页面上的html5对象)
Firefox版本31.0
Chrome版本39.0.2171.71米
操作系统版本:Windows 7旗舰版(6.1.7601)SP1
S-Video转USB转换器:StarTech SVID2USB2NS(http://www.startech.com/AV/Converters/Video/USB-S-Video-Capture-Cable~SVID2USB2NS)
源相机:松下NV-DS35B(数码摄像机)
有没有人有任何想法导致这个,以及为什么WebRTC不会用这个设备玩球?
(更一般地说,我知道设备正在向PC发送视频信号,因为在IE中我已经开发了一个使用DirectShow来获取视频源的ActiveX控件,并且它收集的源很好 - 我欣赏不同的技术,但它确实证明设备在那里并发送视频!)
媒体捕获流的规范规定,在 MediaStreamTrack 的生命周期中,如果 MST 已“静音”或“禁用”,则实时状态可能会被零信息内容替换。这将导致渲染黑帧。
换句话说,如果 MST 既未静音又已启用,媒体只能从源流出。
静音/取消静音状态反映了源是否提供任何媒体。
启用/禁用状态决定轨道是否输出媒体。
确保没有其他应用程序正在使用您的源设备。就您而言,StarTech 转换器。当您尝试在浏览器中 getUserMedia 时,请关闭所有可能访问您的捕获设备的其他应用程序。
请访问此工作草案,了解有关 MST 生命周期和流程的更多信息。
另一个问题可能是您的设备不提供满足媒体轨道上的限制的媒体。您的设备能够传输 NTSC 和 PAL 视频信号。因此,尝试调整 getUserMedia 的约束,例如 PAL 信号,如下所示:
{
audio: false,
video: {
mandatory: {
maxWidth: 768,
maxHeight: 576,
maxAspectRatio: 1.333,
maxFrameRate: 25
}
}
Run Code Online (Sandbox Code Playgroud)
希望能有所帮助。