Verwenden Sie FFmpeg, um moov atom zu lokalisieren

20

Ich habe eine Bibliothek von Videos, von denen alle sollen für Web-Streaming , indem man die angepasst wurden moovAtom vor dem Rest des Videos. Auf diese Weise kann die Wiedergabe beginnen, bevor der Client das Video vollständig heruntergeladen hat.

Gibt es eine zuverlässige Möglichkeit, um zu überprüfen, ob ein bestimmtes Video angepasst wurde, indem ermittelt wird, wie viele Bytes im moovAtom vorhanden sind? Dies dient nur zu Debugging-Zwecken.

Jamie Taylor
quelle
4
Nur als Referenz für andere, die daran interessiert sind, das Moov-Atom am Anfang zu platzieren, um die Wiedergabe zu erleichtern, siehe die -movflags faststartOption oder das qt-faststartTool in ffmpeg.
Logan

Antworten:

22

FFmpeg zeigt Ihnen diese Informationen nicht wirklich an.

Sie könnten AtomicParsley verwenden , um die Datei zu analysieren, zB:

AtomicParsley input.mp4 -T 

Dies zeigt Ihnen die Position der Atome in einem Baum. Befindet sich das moovAtom am Anfang der Datei, muss es direkt nach dem ftypAtom stehen. Sie können also versuchen, die Ausgabe zu analysieren, z. B. in Bash, indem Sie nur die zweite Zeile drucken und prüfen, ob sie Folgendes enthält moov:

AtomicParsley input.mp4 -T | sed -n 2p | grep -q "moov" && echo "yup" || echo "nope"
slhck
quelle
Haha,
na ja, ich
Beachten Sie, dass dies bei YouTube DASH-Dateien nicht funktioniert.
Steven Penny
1
@StevenPenny Richtig, DASH-Segmente enthalten nicht den gesamten Atom-Baum, da es sich nur um Segmente handelt, nicht um vollständige ISO-Basismediendateien.
Slhck
12

Mit dieserqtfaststart Option (nicht mit der von ffmpeg identisch qt-faststart) zeigt die qtfaststart -l Eingabe .mp4 die Reihenfolge der Atome der obersten Ebene an.

$ 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)
$
mark4o
quelle
3
Wenn Sie pipinstalliert haben, können Sie qtfaststartmitpip install qtfaststart
qff am
Sie können auch mit Homebrew installieren:brew install qtfaststart
Brandon Durham
-1

Sie können dies mit FFprobe tun:

ffprobe -v trace infile.mp4

Oder mit Bento4 :

$ mp4info infile.m4a
Datei:
  Hauptmarke: isom
  Nebenversion: 200
  Kompatible Marke: isom
  Kompatible Marke: ISO2
  Kompatible Marke: mp41
  Schnellstart: Nein

$ mp4info outfile.m4a
Datei:
  Hauptmarke: isom
  Nebenversion: 200
  Kompatible Marke: isom
  Kompatible Marke: ISO2
  Kompatible Marke: mp41
  Schnellstart: ja
Steven Penny
quelle