2

我几乎没有对 Media Souce Extension/API 进行调查,但我还没有找到覆盖特定缓冲区的方法。假设我观看了前 30 秒质量较低的视频,然后播放器切换到更高质量,所以 30-60 秒是 HQ。所以......当我回到 0-30 秒时,我会得到质量较低的视频(一个已经缓冲的视频),但我想以更高质量重新附加新请求的相同范围并观看。我在现有播放器(MSE 展示)上看到情况并非如此。

我猜MSE根据开始日期时间(我现在记不起名字)确定在哪里附加缓冲区?那么,是否可以覆盖 Media Source API 中的一些附加范围/缓冲区?

4

1 回答 1

2

是的,这是可能的。在调用appendBuffer()源缓冲区之前,请设置timestampOffset为您希望开始覆盖的时间(以秒为单位)。例如:

    var mediaSource = new MediaSource();
    mediaSource.addEventListener('sourceopen', function() {
        var sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');

        /*  ...code to fetch low quality binary... */
            sourceBuffer.appendBuffer(lowQualityBinary);

        /*  ...later fetch higher quality binary and overwrite
         *  entire video starting at the beginning...
         */
            sourceBuffer.timestampOffset = 0;
            sourceBuffer.appendBuffer(highQualityBinary);
    });

请注意,如果用户正在播放视频,并且您在他们当前播放时间之前的某个时间开始覆盖,则 Chrome 上的当前行为是继续显示原始附加视频。如果它稍后被覆盖,或者他们四处寻找,他们会看到新视频。

于 2014-02-26T21:28:10.340 回答