我正在尝试使用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对象) …