GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erhalte ich die Anzahl der Frames in einem Video auf der Linux-Befehlszeile?

ffprobe kann verwendet werden, um Informationen über eine Mediendatei zu erhalten:

ffprobe -select_streams v -show_streams input.avi

Sie erhalten Details zum Stream:

nb_frames=159697

Suchen Sie nach nb_frames mit grep :

ffprobe -select_streams v -show_streams input.avi 2>/dev/null | grep nb_frames | sed -e 's/nb_frames=//'

Das funktioniert für avi, mp4 und etc. Für einige Container wird kein gültiger Wert angezeigt, z. mpeg.

In diesem Fall funktioniert das ffprobe -show_packets a.mpg 2>/dev/null | grep video | wc -l


Das ist schrecklich und dumm und langsam, aber scheint zu funktionieren:

ffmpeg -i foo.avi -vcodec copy -f rawvideo -y /dev/null 2>&1 | tr ^M '\n' | awk '/^frame=/ {print $2}'|tail -n 1

Es funktioniert auch direkt bei abgeschnittenen Dateien und Raw-Streams (deshalb erhalten Sie nichts für .vob-Dateien)


Ich habe dies zu einer anderen Frage gepostet. Mit tcprobe Werkzeug (aus dem transcode Paket), ist die Anzahl der Frames in der Info enthalten. Verwenden Sie den -i wechseln, um einen Info-Dump aus der Datei zu erhalten:

$ tcprobe -i foo.avi
[tcprobe] RIFF data, AVI video
[avilib] V: 29.970 fps, codec=XVID, frames=38630, width=512, height=384
[avilib] A: 48000 Hz, format=0x55, bits=16, channels=2, bitrate=128 kbps,
[avilib]    53707 chunks, 21768720 bytes, VBR
[tcprobe] summary for foo.avi, (*) = not default, 0 = not detected
import frame size: -g 512x384 [720x576] (*)
       frame rate: -f 29.970 [25.000] frc=4 (*)
      audio track: -a 0 [0] -e 48000,16,2 [48000,16,2] -n 0x55 [0x2000] (*)
                   bitrate=128 kbps
           length: 38630 frames, frame_time=33 msec, duration=0:21:28.954

Beachten Sie, dass die Anzahl der Frames hier in zwei Zeilen angegeben ist (zweite Ausgabezeile und letzte Ausgabezeile).


Linux
  1. So zeigen Sie bestimmte Zeilen einer Datei in der Linux-Befehlszeile an

  2. Wie bekomme ich die Befehlszeilenargumente an einen laufenden Prozess auf Unix/Linux-Systemen übergeben?

  3. Wie erhalte ich die Anzahl der physischen Festplatten in Linux?

  4. Wie kann ich einen Ordner über die Linux-Befehlszeile kopieren?

  5. Wie erhalte ich die URL der Dropbox-Datei von der Befehlszeile?

So erhalten Sie die Größe eines Verzeichnisses in Linux

So verwenden Sie Nano, den Linux-Befehlszeilen-Texteditor

Meistern Sie die Linux-Befehlszeile

So erhalten Sie die Anzahl der Prozessoren / Kerne in Linux

Wie erhalte ich die Anzahl der CPUs in Linux mit C?

Wie kann ich die Bitrate eines Videos von einer Befehlszeile in Linux abrufen?