Это зависит от того, содержат ли удаленные видеоролики соответствующие метаданные.
Чтобы начать воспроизведение с середины видео, игрок должен сначала загрузить начало видео, проанализировать событие onMetadata
и проанализировать массив, содержащий отображение времени ключевого кадра в позиции байта.
Когда сбрасывали в инструменте flvmeta, метаданные могут выглядеть следующим образом:
{
'hasMetadata' => true
'hasVideo' => true
'hasAudio' => true
'duration' => 76.826
'lasttimestamp' => 76.8
'lastkeyframetimestamp' => 74.449
'width' => 608
'height' => 336
'videodatarate' => 472.876919109
'framerate' => 23.3124202744
'audiodatarate' => 31.25
'audiosamplerate' => 22000
'audiosamplesize' => 16
'stereo' => false
'filesize' => 5036611
'videosize' => 4671635
'audiosize' => 342596
'datasize' => 5017666
'metadatacreator' => 'flvmeta 1.1-dev'
'metadatadate' => Wed, 23 Dec 2009 17:37:20 Paris, Madrid
'audiocodecid' => 2
'videocodecid' => 2
'audiodelay' => 0
'canSeekToEnd' => false
'hasCuePoints' => false
'cuePoints' => [
]
'hasKeyframes' => true
'keyframes' => {
'times': [
0
0.5
0.709
1.21
1.71
2.211
2.711
3.212
3.712
]
'filepositions': [
3534
30982
47899
71050
96847
123067
161269
194445
225145
]
}
}
Это позволяет игроку знать общую длительность файла, и обратиться к ближайшему ключевому кадру из нужного времени в видео с помощью частичного HTTP-запроса вместо ожидания загрузки файла до нужной точки.
Есть несколько инструментов для ввода этих метаданных, таких как flvtool2, yamdi и мой собственный flvmeta. Это будет работать, если вы можете изменить удаленные файлы или если они уже содержат эти метаданные.