the*_*oot 2 javascript navigator mediadevices
我正在编写代码以允许页面内select元素选择相机。默认相机应该是“环境”相机,而其余的应该在后面列出。
使用以下调用,我可以从适当的面向“环境”的摄像头流式传输视频:
navigator.mediaDevices.getUserMedia({ video: { facingMode: "environment"} }).then(function (stream) {
// display stream on web page
...
});
Run Code Online (Sandbox Code Playgroud)
同样,我可以使用以下方法获取可用设备列表:
navigator.mediaDevices.enumerateDevices().then(
devices => {
// build list of options
}
);
Run Code Online (Sandbox Code Playgroud)
我存储deviceId每个选项的 ,并使用它来显示来自那个运行良好的相机的提要。
但是,默认选择的选项不一定是“环境”相机。并且从返回的流对象getUserMedia似乎没有一种简单的方法来确定deviceId提供该流的设备。我似乎也找不到任何其他方法来确定面向“环境”的相机。
这是不可能的还是getDeviceIdForFacingMode我刚刚错过了某种功能?
在进一步挖掘对象之后,我最终发现以下工作可以deviceId从流中获取:
stream.getVideoTracks()[0].getSettings().deviceId
Run Code Online (Sandbox Code Playgroud)
我认为在其他情况下,[0]如果出于某种原因,您的流涉及多个视频轨道,您可能需要小心,但就我而言,这很有效。一般来说,我希望您可以在stream.getVideoTracks()[i]( MediaStreamTrack ) 和stream.getVideoTracks()[i].getSettings()( MediaTrackSettings )之间获得所需的任何信息。
| 归档时间: |
|
| 查看次数: |
1324 次 |
| 最近记录: |