javascript - 如果我将音频设置为 true,适用于 Iphone 和 Ipad 的 Safari 自录视频会卡住

标签 javascript jquery ios streaming webrtc

我已经使用 webrtc api 和 jQuery JavaScript 完成了应用程序视频聊天,但我在 iPhone 和 iPad 上的 Safari 中遇到问题,当我接收远程视频时,自身视频会卡住,只有当我将音频设置为 true 时才会发生这种情况在我的设置中,

 var constraint = {
        video: {
            minWidth: 270,
            minHeight: 270,
            minFrameRate: 25,
            maxWidth: 270,
            maxHeight: 270,
            maxFrameRate: 25,
            facingMode: 'user'
        },
        audio: false
    }

有人可以帮我吗

最佳答案

我能够成功地解决这个问题,我将音频流和视频流分开,克隆我的全局流并以不同的方式处理两者,这是帮助我做到这一点的代码,我希望这对某人有帮助。

function makeAudioOnlyStreamFromExistingStream(stream) {
  var audioStream = stream.clone();
  var videoTracks = audioStream.getVideoTracks();
  for (var i = 0, len = videoTracks.length; i < len; i++) {
    audioStream.removeTrack(videoTracks[i]);
  }
  console.log('created audio only stream, original stream tracks: ', stream.getTracks());
  console.log('created audio only stream, new stream tracks: ', audioStream.getTracks());
  return audioStream;
}

function makeVideoOnlyStreamFromExistingStream(stream) {
  var videoStream = stream.clone();
  var audioTracks = videoStream.getAudioTracks();
  for (var i = 0, len = audioTracks.length; i < len; i++) {
    videoStream.removeTrack(audioTracks[i]);
  }
  console.log('created video only stream, original stream tracks: ', stream.getTracks());
  console.log('created video only stream, new stream tracks: ', videoStream.getTracks());
  return videoStream;
}
function handleSuccess(stream) {
  var audioOnlyStream = makeAudioOnlyStreamFromExistingStream(stream);
  var videoOnlyStream = makeVideoOnlyStreamFromExistingStream(stream);
  // Do stuff with all the streams...
}
function handleError(error) {
  console.error('getUserMedia() error: ', error);
}
var constraints = {
  audio: true,
  video: true,
};
navigator.mediaDevices.getUserMedia(constraints).
    then(handleSuccess).catch(handleError);

完整的例子在这里

https://webrtchacks.com/guide-to-safari-webrtc/

关于javascript - 如果我将音频设置为 true,适用于 Iphone 和 Ipad 的 Safari 自录视频会卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55713551/

相关文章:

Javascript - 捕获对对象属性的访问

JavaScript 内容可编辑

javascript - 是否可以根据不同的类别更改我的脚本中的数据源

ios - 如何在 firebase 的实时数据库中发送新消息的推送通知

iOS Facebook SDK - 获取用户位置

javascript - 将输入绑定(bind) react 到状态与局部变量

javascript - 多个复选框中的一个应始终保持未选中状态

jquery - 如何获取图像的原始大小-Jquery

javascript - Wow + jquery + animate div 在加载时显示然后再次出现

ios - NSDateFormatter 没有给出预期的结果