![](/img/trans.png)
[英]Android Chrome : Uncaught (in promise) DOMException: Failed to load because no supported source was found
[英]Use Media Source Extensions meet DOMException: Failed to load because no supported source was found
我使用ffmpeg将mp4转换为m3u8; 并且它保持相同的编解码器值。 当我使用fetch获取ts缓冲区并将其附加到MSE实例时。 如此糟糕。 没用
一些代码在这里:
function sourceOpen(e) {
URL.revokeObjectURL(video.src);
// var mime = 'video/mp4; codecs="avc1.42c015, mp4a.40.5"';avc1.42001e"
var mime = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';
var mediaSource = e.target;
sourceBuffer = mediaSource.addSourceBuffer(mime);
var videoUrl = './video/' + playManifest.segments[index]['uri'];
log('.js-log-m3u8', 'Fetch Segment ~' + videoUrl);
fetch(videoUrl, {
// headers: { range: 'bytes=0-5671398' }
})
.then(function (response) {
return response.arrayBuffer();
})
.then(function (arrayBuffer) {
sourceBuffer.appendBuffer(arrayBuffer);
sourceBuffer.addEventListener('updateend', updateEnd);
});
}
在线测试页面: http : //events.jackpu.com/media-source/
您正在将mime类型设置为video / mp4,但尝试将传输流段追加到源缓冲区。 结果,附加失败,并且没有数据被缓冲。
一旦获取了所有段,就调用播放,而不检查是否已缓冲任何数据,并且Promise拒绝。
假设您的用户代理能够执行此操作,则需要使用正确的mime类型创建SourceBuffer。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.