查找指定段的 webm 视频的字节范围

Find bytes range of webm video for specified segment

我有一个 webm 格式的视频(比如 video.webm 时长是 60 秒)
我想获取具有 http header 范围(范围:100-200)的指定视频片段(即分割视频)。
换句话说:
我想获取一段视频(例如从第 4 秒到第 12 秒),但我不想使用任何转换器,如 ffmpeg。我想向服务器发送 http 请求并获取指定范围的 webm 文件。

我可以使用这种方法吗(http 范围 header)?

谢谢

由于源不是实时的,因此应该 有一个Cues 块。我认为一种方法是获取文件的开头以获取 MetaSeek 信息,该信息会将您指向 Cues 框。

解析 Cues 将得到 CueTimeCueTrackCueClusterPositionCueBlockNumber 等。您可以使用这些信息来查找集群你需要。

查看详细级别为 mkvinfo 的文件,了解其组织方式 (mkvinfo -v -v -v input.webm)。

示例输出:

+ Cues at 3441
| + Cue point at 3447
|  + Cue time: 0.000s at 3449
|  + Cue track positions at 3452
|   + Cue track: 1 at 3454
|   + Cue cluster position: 3911 at 3457
| + Cue point at 3461
|  + Cue time: 0.600s at 3463
|  + Cue track positions at 3467
|   + Cue track: 1 at 3469
|   + Cue cluster position: 3911 at 3472
|   + Cue block number: 42 at 3476
| + Cue point at 3480
|  + Cue time: 3.520s at 3482
|  + Cue track positions at 3486
|   + Cue track: 1 at 3488
|   + Cue cluster position: 3911 at 3491
|   + Cue block number: 241 at 3495

您还可以找到 Matroska 规范 here. WebM is a subset, see the specs here

更新:我发现 an example on how to use HTTP Range request to download a cluster here. It uses the Media Source Extension ToolsWebM 信息转储到 JSON