我想使用媒体源扩展来流式传输 HLS 片段。我已经尝试使用 mpeg-dash 片段(使用 MP4Box 生成)和媒体源扩展进行相同的操作。
var mediaSource = new window.MediaSource();
mediaSource.addEventListener('sourceopen', _onSourceOpen);
$('video').attr('src', URL.createObjectURL(self.mediaSource));
function _onSourceOpen() {
sourceBuffer = mediaSource.addSourceBuffer('video/mp4; codecs="avc1.64000d,mp4a.40.2"');
}
function _onFragmentDataLoad(data) {
sourceBuffer.appendBuffer(data);
}
它可以在 chrome、Windows 8 IE、android chrome 上流畅运行。它也适用于 Safari 上的作品,但它没有获得媒体的总持续时间。所以我在 safari 上对 HLS 片段进行了同样的尝试。生成的 HLS 数据有.m3u8
文件及其他.ts
碎片。当我将 .m3u8 文件指定为视频元素的源时:
$('video').attr('src', 'filename.m3u8');
事情就像魅力一样起作用。但后来我失去了对交通的控制。为了完全控制传输和响应分辨率的变化,我尝试将.ts
片段一一初始化sourcebuffer
。它在野生动物园中严重失败。但相同的 HLS 片段可以很好地配合exo player
。我的问题是:
1.如何使用Media Source Extension在safari上实现HLS流。
2. 由于 HLS 生成不产生任何init
片段与破折号生成不同,媒体播放器如何理解持续时间和其他元数据?
3. 如何获取该HLS的编解码器?或者有什么编解码器默认受 safari 支持并且可以在这里使用?
Thanks.
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)