我想从连接到我的电脑的多个网络摄像头捕获视频。使用一个网络摄像头很容易,但我如何从多个来源获取视频流? 是否可以选择将哪个摄像头用于一个流?
navigator.getUserMedia ({
video: true
}, function (oMedia) {
var video = document.getElementById ('tVideo1');
video.src = window.URL.createObjectURL (oMedia);
});
答案 0 :(得分:4)
我对你的问题很感兴趣,所以我开始研究'getusermedia multiple cameras'。
几个小时后,当我快要放弃时,我遇到了this google group discussion。
我回过头来回答您的问题,看看您的目标是来自所有网络摄像头的流应该同时出现,还是您想要向用户提供选择相机Feed的选项。您似乎希望用户选择Feed。如果是后一种情况,那么在上面的链接中,Vikas(在他的8/15/2013消息中)已经描述了实现这一目标的方法。您需要启用WebRTC枚举源标志,然后使用MediaStreamTrack.getSources获取所有源并将sourceId传递给getUserMedia,例如navigator.getUserMedia({“video”:{optional:[{sourceId:“---您的ID在这里 - - “}}}},有趣,errfun);.似乎其中一个用户能够成功地使用它。
我看到了Here's the sourcecode。 此信息将特定于Chrome金丝雀或Firefox。我只是想我会分享它,以防你还没有碰到过这个,这可能会对你有所帮助。我已经实现了一个应用程序,其中多个网络摄像头在单个屏幕上提供,但它更简单,因为它是一个桌面应用程序。
答案 1 :(得分:3)
您需要使用getSources API,我担心这种API不受支持。我认为隐藏在配置标志后面的Chrome has a version of it可用,但除此之外,除了等待之外你什么也做不了。
不是你想听到的答案,我知道,抱歉。
答案 2 :(得分:2)
您可以使用弹出窗口同时捕获多个视频流。我只有一个摄像头,所以我无法测试这个解决方案。在Chrome中,我假设用户可以点击每个子窗口地址栏中的相机图标来选择独立的来源。当Firefox要求获得使用设备的权限时,Firefox会询问您使用哪个摄像头,因此甚至可以使用iframe而不是Firefox的弹出窗口。