18

У меня есть библиотека видео, все из которых должны были быть настроены для потоковой передачи в Интернете, поместив атом moov впереди остальной части видео. Это позволяет начать воспроизведение до того, как клиент полностью загрузит видео.

Есть ли надежный способ проверить, было ли настроено определенное видео, путем определения количества байтов в атоме moov ? Это только для целей отладки.

3 ответа3

22

FFmpeg не покажет вам эту информацию, правда.

Вы можете использовать AtomicParsley для анализа файла, например:

AtomicParsley input.mp4 -T 

Это покажет вам расположение атомов в дереве. Если атом moov находится в начале файла, он должен идти сразу после атома ftyp , так что вы можете попробовать проанализировать вывод, например, в Bash, только напечатать вторую строку и проверить, содержит ли он moov:

AtomicParsley input.mp4 -T | sed -n 2p | grep -q "moov" && echo "yup" || echo "nope"
11

Используя этот qtfaststart (не то же самое, что qt-faststart ffmpeg), qtfaststart -l input.mp4 будет отображать порядок атомов верхнего уровня.

$ qtfaststart -l bad.mp4
ftyp (32 bytes)
free (8 bytes)
mdat (559619 bytes)
moov (52916 bytes)
$ qtfaststart -l good.mp4
ftyp (32 bytes)
moov (52916 bytes)
mdat (559619 bytes)
$
-1

Вы можете сделать это с FFprobe:

ffprobe -v trace infile.mp4

Или с Bento4:

$ mp4info infile.m4a
File:
  major brand:      isom
  minor version:    200
  compatible brand: isom
  compatible brand: iso2
  compatible brand: mp41
  fast start:       no

$ mp4info outfile.m4a
File:
  major brand:      isom
  minor version:    200
  compatible brand: isom
  compatible brand: iso2
  compatible brand: mp41
  fast start:       yes

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .