WebRTC无法从USBinput设备获取video(readyState会结束)

我正尝试使用WebRTC在屏幕上显示videoinput作为实时馈送。 我不是想做任何对等的通讯或类似的东西,只是显示一个video源。

代码我有我的笔记本电脑集成摄像头工作正常,但是当我连接外部videoinput设备(在这种情况下,通过S-Video连接到USBinput使用StarTech转换器的旧摄像机 – 型号SVID2USB2NS),我什么也没得到。 我已经在Chrome和FireFox中试过了。

这两个浏览器findvideo设备,并提供我的集成摄像头或USB设备(在这种情况下列为“USB 2820”)的select,所以他们知道在这种情况下的设备。

在Chrome中,当我尝试连接时,getUserMedia调用的“成功”callback被调用,如果我.getVideoTracks()findMediaStreamTrack ,并且callback的时刻, MediaStreamTrack返回enabled = truereadyState = live 。 然而,没有videoinput(只是一个黑色的video面板,Chrome浏览器标签中的红色“录制”图标没有出现)。 如果我稍后再检查MediaStreamTrack,我发现readyState now =“ ended ”(虽然启用仍然成立)。

在FireFox中,find了设备,但是使用getUserMedia连接到它的任何尝试都会触发错误callback,并带有HARDWARE_UNAVAILABLE错误。

我的getUserMedia调用很简单:

 navigator.getUserMedia({ audio: false, video: true }, _webRTCsuccessCallback, _webRTCerrorCallback); 

我的成功callback是(包括一些testing代码立即检查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); } } 

(其中_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发送video信号,就像在IE中我已经开发了一个使用DirectShow获取video的ActiveX控件,并且它收集到的Feed很好 – 我欣赏不同的技术,但它确实certificate了设备在那里并发送video!)

Media Capture Streams的规格声明,在MediaStreamTrack的生命周期中,如果MST已被“静音”或“禁用”,则实况状态可以被零信息内容替代。这将导致呈现黑帧。

换句话说,如果MST同时处于未解除状态和启用状态,媒体只能从源端stream出。

静音/非静音状态反映源是否提供任何媒体。

启用/禁用状态确定轨道是否输出媒体。

确保没有其他应用程序正在使用您的源设备。 在你的情况下,StarTrack转换器。 当您尝试在浏览器中获取用户媒体时,closures所有可能访问您的捕获设备的其他应用程序。

访问本工作草案 ,了解有关MST生命周期和stream程的更多信息。

另一个问题可能是您的设备不提供符合您的媒体轨道上的限制的媒体。 您的设备能够传送NTSC和PALvideo信号。 所以尝试调整getUserMedia的约束条件,比如像PAL这样的信号:

 { audio: false, video: { mandatory: { maxWidth: 768, maxHeight: 576, maxAspectRatio: 1.333, maxFrameRate: 25 } } 

希望有所帮助。