navigator.mediaDevices.getUserMedia在chrome获取视频流分辨率低(640*480),但是在Safari就是1280*720,是浏览器的问题吗?

作者站长头像
站长
· 阅读数 4

获取摄像头stream的分辨率谷歌浏览器分辨率一直是640480很模糊,切OBS则是1280720,在Safari摄像头stream则是正常的1280*720,电脑摄像头分辨率很高并不是摄像头的问题,请大佬们给点思路吧

navigator.mediaDevices.getUserMedia({
  video: {
    width: { ideal: 1280 },
    height: { ideal: 720 }
  }
})
.then(function(stream) {
  const videoTrack = stream.getVideoTracks()[0];
  const settings = videoTrack.getSettings();
  console.log('Actual video resolution: ' + settings.width + 'x' + settings.height);
})
.catch(function(error) {
  console.log("getUserMedia error: ", error);
});
回复
1个回答
avatar
test
2024-06-24

navigator.mediaDevices.getUserMedia({ video: true })

.then(function (stream) {
    const track = stream.getVideoTracks()[0];
    const capabilities = track.getCapabilities();

    // 检查是否支持指定的分辨率
    if (capabilities.width && capabilities.height) {
        const constraints = {
            width: { ideal: 1280 },
            height: { ideal: 720 }
        };

        // 应用分辨率约束
        track.applyConstraints(constraints)
            .then(function () {
                // 分辨率应用成功,可以继续处理视频流
            })
            .catch(function (error) {
                console.error('Error applying constraints:', error);
            });
    } else {
        console.error('Video track does not support setting custom resolutions.');
    }
})
.catch(function (error) {
    console.error('Error accessing user media:', error);
});

这样能行么?

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容