如何在不下载整个片段的情况下使用媒体源缓冲区和分段 mp4 在特定时间启动视频?

Posted

技术标签:

【中文标题】如何在不下载整个片段的情况下使用媒体源缓冲区和分段 mp4 在特定时间启动视频?【英文标题】:How to start video at a specific time using media source buffer and fragmented mp4 without downloading entire segments? 【发布时间】:2022-01-01 00:18:00 【问题描述】:

我正在尝试在片段的 mp4 文件上使用带有源缓冲区的媒体源,我想在特定时间开始播放视频,比如 10 秒。我找不到任何使用 sourcebuffer 和媒体源的示例。 我能够将视频从第 0 秒流式传输到完整,我需要帮助才能从所需的时间戳开始视频播放 我尝试了 sourceBuffer.appendWindowStart, / sourceBuffer.timestampOffset 没有按预期工作,或者我对它的理解不正确。 我正在尝试关注这个example,在这个codesandbox

【问题讨论】:

【参考方案1】:

您始终可以在您引用的示例的第 46 行更改 video.currentTime(在执行 video.play() 之前)。

一旦您添加了引用该时间戳的片段,系统就会开始播放视频。

【讨论】:

这里我还是要下载所有片段,假设每个片段是2秒,我想在12秒播放视频,我仍然要下载所有片段直到12日第二,我不想那样做。 video.currentTime 只会将视频时间线移动到那里 您不必这样做。你只需要 1. 下载初始化段, 2. 下载最接近你 12s 的段。您控制编码的参数,很可能是从头到尾的编码,您生成的每个片段都包含视频的一部分。您只需附加您需要的部分并将currentTime 设置到您需要的位置。

以上是关于如何在不下载整个片段的情况下使用媒体源缓冲区和分段 mp4 在特定时间启动视频?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不锁定活动方向的情况下锁定片段方向?

如何在不创建新片段的情况下显示片段?

如何找到我可以在不分段的情况下发送的最大 UDP 数据包?

如何在不复制片段的情况下传递道具

MPEG DASH 部分片段

如何在不单击的情况下显示片段