【问题标题】:In ios, when getUserMedia is called again, the existing stream is killed在ios中,当再次调用getUserMedia时,现有流被杀死
【发布时间】:2022-01-13 18:36:36
【问题描述】:

在 iPad 上使用带有视频聊天应用程序的 Safari 时出现问题。我们希望展示用户的视频源,并提供在弹出窗口中选择他们自己的网络摄像头设备的能力。但是,要显示所选网络摄像头设备,所选网络摄像头的视频会显示在弹出窗口中,但原始摄像头输入会变黑并且音频被切断。调用 navigator.mediaDevices.getUserMedia() 时似乎会发生这种情况。

我获取设备的代码

const constraints = {
        speaker: {deviceId: audioOutputSelect.value ? {exact: audioOutputSelect.value} : undefined},
        audio: {deviceId: audioInputSelect.value ? {exact: audioInputSelect.value} : undefined},
        video: {deviceId: videoSelect.value ? {exact: videoSelect.value} : undefined}
    };
navigator.mediaDevices.getUserMedia(constraints).then((stream) => {
    ...
})

最大的问题是现有视频的音频消失了。

【问题讨论】:

    标签: javascript webrtc


    【解决方案1】:

    这是 Safari 中 getUserMedia 的一个已知限制,早在 2018 年就在 https://webrtchacks.com/guide-to-safari-webrtc/ 中进行了描述

    如果您的弹出视频只是一个 HTML 元素,则应该可以重用 MediaStream 对象,但如果您正在构建“选择您的相机”对话框,这仍然无法正常工作。

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 2013-08-19
      • 2017-01-23
      • 2019-11-17
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多