我正在尝试使用MediaSource播放我的视频:
const videoTag = document.getElementById('theVideoId');
const mimeCodec = 'video/mp4; codecs="' + audioCodec + ', ' + videoCodec + '"';
if (!('MediaSource' in window) || !MediaSource.isTypeSupported(mimeCodec)) {
console.error('Unsupported MIME type or codec: ', mimeCodec);
}
const mediaSource = new MediaSource();
videoTag.src = URL.createObjectURL(mediaSource);
videoTag.crossOrigin = 'anonymous';
await new Promise((resolve, reject) => {
mediaSource.addEventListener('sourceopen', function (_) {
console.log(this.readyState); // open
resolve();
});
});
const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
//....
sourceBuffer.appendBuffer(new Uint8Array(chunk));
使用上面的代码,一些视频播放得很好。其他的,给个警告:
Cannot play media. No decoders for requested formats: video/mp4; codecs="mp4a.40.2 avc1.4d400c", video/mp4; codecs="mp4a.40.2 avc1.4d400c"
有趣的是我if
在上面的代码中的声明
if (!('MediaSource' in window) || !MediaSource.isTypeSupported(mimeCodec)) {
就像mimeCodec
支持源一样,因为它不会抛出Unsupported MIME type or codec
错误。我也怀疑这个Cannot play media. No decoders for requested formats
错误,因为我的 Google 相册帐户上播放的视频完全相同,所以我知道我的浏览器确实支持它。
我该如何解决?有没有办法为本codec
机不支持的类型添加“解码器”,或者我可以将视频重新格式化为更常见的支持codec
类型吗?该视频是常见的Big Buck Bunny mp4视频之一,因此我还想知道我的代码是否缺少某些内容,因为该视频似乎得到了广泛支持。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句