在中止SourceBuffer后,MSE Safari 11不会将Segments附加到SourceBuffer

时间:2017-11-10 12:00:57

标签: javascript safari media-source

我正在使用Media Source Extensions API处理视频播放器。 为了实现Seek功能,我做了以下几点:

首先使用SourceBuffer的abort()方法中止当前段并重置段解析器。 然后获取currentTime的新段,然后下载新段并附加到SourceBuffer。

if (mediaSource.readyState == "open") {
  mediaSource.sourceBuffers[0].abort();
}
var nextSegment = getCurrentSegment(vide.currentTime)
appendToBuffer(nextSegment)

在chrome和firefox中一切正常,但在safari中搜索视频时它会停止工作并卡住(因为没有将新段添加到SourceBuffer)。

经过一些研究,我发现从版本9开始它是safari MSE bug

我想知道这个问题是否有解决方法?

1 个答案:

答案 0 :(得分:1)

它似乎是唯一的解决方法是删除一个空的abort()函数,就像google shaka播放器一样。

https://github.com/google/shaka-player/blob/d90821a1a5830cdf09caa9707a99c945979ffd0e/lib/polyfill/mediasource.js#L117

arr.length