Javascript | MediaRecorder API - 桌面上录制的视频文件无法在移动设备上播放

Javascript | MediaRecorder API - Recorded video file on Desktop does not play in Mobile

我正在尝试使用 Canvas 和 MediaRecorder 开发类似 canva 的 Insta 故事创建器 该应用程序在桌面浏览器上运行完美——我可以下载文件并在桌面上播放。但是,当我将该文件发送到我的手机时,它无法播放(即使在 Insta 上)。我认为这是编解码器的问题 - 但不知道如何解决。

这是处理 mediaRecorderAPI 的函数

有没有我可以使用的 mime 类型,它是通用的,可以在任何设备上播放?

initRecorder () {
          var dl = document.querySelector("#dl")
          let videoStream = this.canvas.captureStream(60);
          if(this.isAudioPresent) {
              videoStream.addTrack(this.audioStream.getAudioTracks()[0])
          }
          let mediaRecorder = new MediaRecorder(videoStream, {
              videoBitsPerSecond : 2500000,
              mime: 'video/webm'
           });

          let chunks = [];

          mediaRecorder.onstop = function(e) {
            var blob = new Blob(chunks, { 'type' : 'video/webm' });
            chunks = [];
            var videoURL = URL.createObjectURL(blob);
            dl.href = videoURL;
          };
          mediaRecorder.ondataavailable = function(e) {
             e.data.size && chunks.push(e.data);
          };

          mediaRecorder.start();
          setTimeout(function (){ mediaRecorder.stop(); },this.storytime);
        }
    ```

想通了:不同的浏览器使用不同的转码。 Insta 只接受 MP4 转码。因此,您需要在前端使用代码转换器(ffmpeg.js 或 ffmpeg 的 wasm 版本)或将您的数据发送到后端并在那里处理(我最终这样做了)