Поскольку источник не является живым он должен иметь Cues
блок. Я думаю, что один из способов сделать это - получить начало файла, чтобы получить информацию MetaSeek
, которая укажет вам на поле Cues
.
разборе Cues
даст CueTime
, CueTrack
, CueClusterPosition
, CueBlockNumber
и т.д. Вы можете использовать эту информацию, чтобы найти кластеры, которые вам нужны.
Посмотрите файл с mkvinfo в подробном уровне 3, чтобы узнать, как он организован (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
- это подмножество, см. Спецификации here.
Обновление: Я нашел an example о том, как использовать HTTP Range
запрос на загрузку кластера. Он использует Media Source Extension Tools для сбрасывания WebM
информации в JSON
.
Возможно, сначала запустите ffprobe? Но я не знаю, говорит ли он, какие байты представляют собой кадр ... – rogerdpack