4

我想使用媒体源扩展流式传输 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 上对 HLS 片段进行了同样的尝试。生成的 HLS 数据有.m3u8文件和其他.ts片段。当我将 .m3u8 文件分配为视频元素的源时:

$('video').attr('src', 'filename.m3u8');

事情就像魅力一样。但后来我失去了对运输的控制。为了完全控制传输和响应式分辨率更改,我尝试将.ts片段一个一个放入 initializedsourcebuffer中。它在野生动物园中严重失败。但相同的 HLS 片段与exo player. 我的问题是: 1. 如何使用 Media Source Extension 在 safari 上实现 HLS 流。2. 由于 HLS 生成不像 dash 生成那样产生任何init片段,媒体播放器如何理解持续时间和其他元数据?3、如何获取这个HLS的编解码器?或者是否有任何 safari 默认支持并且可以在这里使用的编解码器?

谢谢。

4

0 回答 0