是的,这是可能的。在调用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 上的当前行为是继续显示原始附加视频。如果它稍后被覆盖,或者他们四处寻找,他们会看到新视频。