小编Pul*_*Lab的帖子

WebRTC无法从USB输入设备获取视频(readyState转到结束)

我正在尝试使用WebRTC在屏幕上显示视频输入作为实时馈送.我不是要尝试任何点对点通信或类似的东西,只是显示视频源.

我的笔记本电脑集成网络摄像头的代码工作得很好,但当我连接外部视频输入设备(在这种情况下,通过S-Video连接的旧摄像机使用StarTech转换器连接到USB输入 - 型号SVID2USB2NS)时,我什么也得不到.我在Chrome和FireFox都试过这个.

两种浏览器都可以找到视频设备并为我提供集成网络摄像头或USB设备(在本例中列为"USB 2820")的选择,因此在这种情况下他们都知道设备.

在Chrome中,当我尝试连接时,调用getUserMedia调用的"成功"回调,如果我.getVideoTracks()我找到MediaStreamTrack了回调的时刻,则MediaStreamTrack返回enabled= truereadyState= 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对象) …

javascript html5 webrtc

39
推荐指数
1
解决办法
1850
查看次数

标签 统计

html5 ×1

javascript ×1

webrtc ×1