标签: mediastreamtrack

如何捕获 MediaRecorder.ondataavailble 不再被调用的问题?

我正在使用 捕获用户的音频和视频,navigator.mediaDevices.getUserMedia()然后使用MediaRecorder并将ondataavailable该视频和音频 blob 存储在本地以便稍后上传。

现在我正在处理一个问题,由于某种原因,ondataavailable在录音过程中停止被调用。我不知道为什么,也没有收到任何出错的警报。首先,有谁知道为什么会发生这种情况以及如何捕获错误?

其次,我尝试过重现。通过做这样的事情。

navigator.mediaDevices.getUserMedia({ audio: true, video: true })
  .then(function(camera) {
          local_media_stream = camera;
          camera.getVideoTracks()[0].onended = function() { console.log("VIDEO ENDED") }
          camera.getAudioTracks()[0].onended = function() { console.log("Audio ENDED") }
          camera.onended = function() { console.log("--- ENDED") }
          camera.onremovetrack = (event) => { console.log(`${event.track.kind} track removed`); };
  }).catch(function(error) {
        alert('Unable to capture your camera. Please check logs.' + error);
        console.error(error);
  });
Run Code Online (Sandbox Code Playgroud)

并记录流

recorder = new MediaRecorder(local_media_stream, {
    mimeType: encoding_options,
    audioBitsPerSecond: 128000,
    videoBitsPerSecond: …
Run Code Online (Sandbox Code Playgroud)

javascript getusermedia web-mediarecorder mediastream mediastreamtrack

5
推荐指数
1
解决办法
1758
查看次数