The MediaSource's readyState is not 'open'的可能原因
kelvin 发布于 2021-08-28

在使用Media Source Extensions API方式播放mp4格式的视频时碰到了一下问题,
Uncaught DOMException: Failed to execute ‘endOfStream’ on ‘MediaSource’: The MediaSource’s readyState is not ‘open’.
at SourceBuffer.

有些说是因为不是fmp4格式,然后用bento4的mp4fragment转成fmp4格式,但是还是报错,查了一遍代码,应该是mimeCodec设置有误,用mp4info查看了codec是avc1.64001E,而我用了avc1.42C01E, mp4a.40.2

//var mimeCodec = 'video/mp4; codecs="avc1.42C01E, mp4a.40.2"';
      var mimeCodec = 'video/mp4; codecs="avc1.64001E"';

      if ('MediaSource' in window && MediaSource.isTypeSupported(mimeCodec)) {
          mediaSource = new MediaSource();

          //mediaSource.addEventListener('sourceopen', sourceOpen);
          //sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);

      } else {
        console.error('Unsupported MIME type or codec: ', mimeCodec);
      }

修改为avc1.64001E后再运行就可以正常的播放了。

kelvin
关注 私信
文章
92
关注
0
粉丝
0