我对Media Souce Extension / API几乎没有调查,但我没有找到覆盖特定缓冲区的方法。让我们说我已经观看了前30秒的低质量,之后玩家切换到了更高的质量,所以30-60秒就是HQ。所以...当我回到0-30秒时,我会得到质量较低的视频(一个已经缓冲),但我想重新添加新请求的相同范围,质量更高,并观察。我见过现有的玩家(MSE陈列柜),情况并非如此。
我猜MSE根据(我现在不记得的名字)开始日期时间确定添加缓冲区的位置? 那么,是否可以覆盖Media Source API中的一些附加范围/缓冲区?
答案 0 :(得分: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上的当前行为是继续显示原始附加视频。如果它稍后被覆盖,或者他们四处寻找,他们就会看到新的视频。