Video streaming 在HTML5视频流中,当用户寻找其他时间时,计算.m4s段文件后缀

Video streaming 在HTML5视频流中,当用户寻找其他时间时,计算.m4s段文件后缀,video-streaming,html5-video,mpeg-dash,media-source,mp4box,Video Streaming,Html5 Video,Mpeg Dash,Media Source,Mp4box,我已经使用Mp4Box为长MP4视频创建了固定长度的片段。Mp4Box创建一个元信息文件mv_init.mp4和类似mv_1.m4s,mv_2.m4s,…我使用HTML5媒体源扩展对视频进行流式处理,流式处理工作正常 问题是,我无法利用我的HTML5播放器的时间搜索功能。当用户使用seekbar搜索到另一个时间点时,我需要为该currentTime获取正确的段文件(mv_{number}.m4s) 例如: 视频持续时间:2小时 段大小:10秒 用户搜索时间:25分钟 25分钟=25×60秒=

我已经使用Mp4Box为长MP4视频创建了固定长度的片段。Mp4Box创建一个元信息文件
mv_init.mp4
和类似
mv_1.m4s
mv_2.m4s
,…我使用HTML5媒体源扩展对视频进行流式处理,流式处理工作正常

问题是,我无法利用我的HTML5播放器的时间搜索功能。当用户使用seekbar搜索到另一个时间点时,我需要为该
currentTime
获取正确的段文件(
mv_{number}.m4s

例如:

  • 视频持续时间:2小时
  • 段大小:10秒
  • 用户搜索时间:25分钟
25分钟=25×60秒=1500秒。因为每个段都有10秒,所以我需要段号1500/10=150。所需的段文件是
mv_150.m4s

计算显然是正确的,但是HTML5播放器在继续流媒体之前,会在
mv_150.m4s
之后下载更多的文件

如何正确计算段文件号,以便在查找后,流媒体平稳运行,而无需下载任何额外文件

为了创建MP4视频片段,我使用了以下命令:

MP4Box -dash 10000 -out video.mpd -dash-profile live -segment-name mv_ -rap video.mp4

我已经研究过这件事,找到了真正的原因。加载段的计算是正确的。问题在于视频文件中的关键帧间隔。关键帧是视频中的一帧,视频随后可以从该帧加载并从该点运行。所以在我的例子中,我需要在每个片段的开始处插入关键帧。因此,当我们在不同的时间位置搜索视频时,加载的下一个片段的开头包含一个关键帧

视频文件中的关键帧可以使用FFMPEG设置。例如,如果我们有一段5秒的视频,那么我们必须使用ffmpeg以5秒的间隔创建关键帧。设置关键帧时的另一个重要点是查看视频的帧速率。视频必须有固定的帧速率,这样我们才能精确计算关键帧的位置

示例:

Video File: gladiator.mp4

Segment Size: 5 seconds
不,我们使用FFMPEG设置帧速率和关键帧间隔

ffmpeg-i gladiator.mp4-x264参数 keyint=120:min keyint=120:no scenecut=1-r 24 gladiator-output.mp4

现在我们使用Mp4Box创建段文件

MP4Box-短跑5000-碎片5000-外角斗士.mpd-短跑外形 按需-段名mv_uiator-output.mp4

所以它将创建像mv_1,mv_2。。以此类推,在每个段文件的开头都有关键帧


你是《玩家》的作者吗?你能给我写一封信吗?即,演示问题的最小示例。你使用哪种浏览器?
keyint=120 i.e; 24 fps * 5 seconds = 120