在使用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后再运行就可以正常的播放了。