Usando o FFmpeg para localizar o átomo moov

18

Eu tenho uma biblioteca de vídeos, os quais devem ter sido ajustados para streaming da web, colocando o moov atom à frente do restante do vídeo. Isso permite que a reprodução comece antes que o cliente tenha baixado completamente o vídeo.

Existe uma maneira confiável de verificar se um determinado vídeo foi ajustado, localizando quantos bytes no moov atom ocorre? Isto é apenas para fins de depuração.

    
por Jamie Taylor 01.03.2013 / 16:00

3 respostas

22

O FFmpeg não mostra essa informação, na verdade.

Você pode usar AtomicParsley para analisar o arquivo, por exemplo:

AtomicParsley input.mp4 -T 

Isso mostrará a localização dos átomos em uma árvore. Se o moov átomo estiver no início do arquivo, ele precisará vir logo após o ftyp átomo, para que você possa tentar analisar a saída, por exemplo, no Bash, imprimindo apenas a segunda linha e verificando se ela contém moov :

AtomicParsley input.mp4 -T | sed -n 2p | grep -q "moov" && echo "yup" || echo "nope"
    
por 01.03.2013 / 17:20
11

Usando isso qtfaststart (não é o mesmo que qt-faststart do ffmpeg), qtfaststart -l input .mp4 mostrará a ordem dos átomos de nível superior.

$ 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)
$
    
por 01.03.2013 / 21:08
0

Você pode fazer isso com o FFprobe:

ffprobe -v trace infile.mp4

Ou com 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
    
por 24.11.2016 / 15:56