提问人:Tim 提问时间:12/11/2019 最后编辑:Tim 更新时间:1/28/2020 访问量:436
媒体源扩展 appendBuffer 恢复
Media Source Extensions appendBuffer recovery
答:
0赞
jmsn
12/12/2019
#1
- 丢失数据只会在缓冲区中产生一个间隙,在播放过程中需要一些间隙跳过逻辑,即当卡在一个范围的末尾时,将 设置为下一个范围的开头并继续播放
currentTime
- 只要将 SourceBuffer.mode 设置为
SourceBuffer.mode
,就可以确保保留段的时间戳,那么无序添加段应该不是问题segments
评论
0赞
Tim
12/12/2019
如果我丢弃几秒钟的数据,然后尝试继续使用 appendBuffer,我会看到 MediaError {code: 3, message: “CHUNK_DEMUXER_ERROR_APPEND_FAILED: Got a block with a timecode before the previous block.”}我可以确认我的 SourceBuffer 具有 mode = segments。
1赞
anthumchris
12/21/2019
#2
这里只有猜测......我假设无序可恢复性取决于被解码的媒体容器的格式(WebM、Ogg 等)。浏览器的 decodeAudioData
函数在接收具有明显乱序/缺失页面的 Ogg Opus 文件(使用 opus-file-splitter 创建)时工作正常。我假设浏览器对两者和 MSE 缓冲区使用相同的底层流解码实现,因此 MSE 应该毫无问题地处理缺失的页面/段。decodeAudioData
不幸的是,MSE 不支持,所以我的测试文件不能立即用于测试。我还不熟悉 WebM 容器,但我最终会为另一个项目将文件重新排序到 MSE 中进行测试,并且可以在发生这种情况时让你知道结果!audio/ogg codecs="opus"
audio/webm codecs="opus"
评论