Wie kann ich die Bitrate eines Videos unter Linux über eine Befehlszeile abrufen?


18

Was ist ein gutes Kommandozeilen-Tool, um die Video-Bitrate einer DivX- oder XVID-AVI-Datei für Linux zu erhalten?


ffplayer zeigt das aktuelle Nitrat während der Videowiedergabe an.
— Biswapriyo

Antworten:


16

Sie können MPlayer verwenden, um diese Informationen abzurufen.

$ mplayer -vo null -ao null -identify -frames 0 foo.avi

Insbesondere möchten Sie die -identifyOption. Die Option -frames 0weist es an, die Datei nicht abzuspielen, und -vo null -ao nullgibt keine Treiber für Video und Audio an (sodass Sie diesen Befehl über SSH oder ein anderes nicht X-fähiges Terminal verwenden können).

Sie können dies mit grepoder anderen Werkzeugen kombinieren , um die gewünschte Linie herauszuziehen:

$ mplayer -vo null -ao null -identify -frames 0 foo.avi | grep kbps
VIDEO:  [XVID]  512x384  24bpp  29.970 fps  990.9 kbps (121.0 kbyte/s)

Die vollständige Ausgabe sieht folgendermaßen aus:

$ mplayer -vo null -ao null -identify -frames 0 foo.avi
MPlayer dev-SVN-r26940 (C) 2000-2007 MPlayer Team
CPU: [hw dependent]
CPUflags:  [hw dependent]
Compiled with runtime CPU detection.

Playing foo.avi.
AVI file format detected.
ID_VIDEO_ID=0
[aviheader] Video stream found, -vid 0
ID_AUDIO_ID=1
[aviheader] Audio stream found, -aid 1
VIDEO:  [XVID]  512x384  24bpp  29.970 fps  990.9 kbps (121.0 kbyte/s)
Clip info:
 Software: transcode-1.0.2
ID_CLIP_INFO_NAME0=Software
ID_CLIP_INFO_VALUE0=transcode-1.0.2
ID_CLIP_INFO_N=1
ID_FILENAME=foo.avi
ID_DEMUXER=avi
ID_VIDEO_FORMAT=XVID
ID_VIDEO_BITRATE=990928
ID_VIDEO_WIDTH=512
ID_VIDEO_HEIGHT=384
ID_VIDEO_FPS=29.970
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=85
ID_AUDIO_BITRATE=135104
ID_AUDIO_RATE=0
ID_AUDIO_NCH=0
ID_LENGTH=1288.95
ID_SEEKABLE=1
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
==========================================================================
ID_VIDEO_CODEC=ffodivx
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=48000
ID_AUDIO_NCH=2
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
AO: [null] 48000Hz 2ch s16le (2 bytes per sample)
ID_AUDIO_CODEC=mp3
Starting playback...

Exiting... (End of file)

1
ps. die mplayer manpage ist ein alptraum ...
— quack quixote

Für diejenigen, die es nicht wissen, ist dies im Wesentlichen das, was midentify.sh tut, das Skript, das im Lieferumfang von mplayer enthalten ist.
— Jonah Braun,

Die Flags müssen aktualisiert werden. Ich bekomme 'ungültige Option -' o 'in Ubuntu 13.04
— hnns

17

ffmpeg funktioniert gut:

ffmpeg -i file.avi

ffmpeg setzt sich dort durch, wo mplayer fehlschlägt.
— dom0

Einige neuere Distributionen (Debian, Ubuntu 14) haben ffmpeg gelöscht und stattdessen die libav-Verzweigung ausgeliefert, sodass Sie möglicherweise installieren libav-toolsund ausführen müssen, avconv -ianstattffmpeg -i
— bain am

Können Sie mir bitte anhand der folgenden Beispielausgabe sagen, welche Videobitrate verwendet wird? Eingabe Nr. 0, flv, aus 'mi-cc-03-bed_and_breakfast.flv': Dauer: 00: 00: 18.7, Start: 0.000000, Bitrate: 64 kb / s Stream Nr. 0.0: Video: flv, yuv420p, 480x360, 29.92 fps (r) Stream # 0.1: Audio: MP3, 44100 Hz, Stereo, 64 kb / s Muss mindestens eine Ausgabedatei liefern
— Zain Ali

5
avprobe -show_streams file.avi

1
Um die Gesamtbitrate anzuzeigen, sollten Sie besser -show_formatoder sogar besser (on * nix) verwenden avprobe -show_format file.avi | grep bit_rate. Die gleiche Syntax funktioniert auch für ffprobe.
— Evilsoup

2

Hier ist ein weiteres Tool, das dasselbe tut:, tcprobedas Teil des transcodePakets ist. Verwenden Sie den -iSchalter, um einen Info-Dump aus der Datei abzurufen (Beispielausgabe aus derselben Datei wie im mplayerBeispiel):

$ 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

2

Erhalten Sie genau die Videobitrate über mediainfo :
$ mediainfo --Output='Video;%BitRate%' '/MY/MEDIA/FILE.MP4'
oder in Kbps:
$ mediainfo --Output='Video;%BitRate/String%'

Erhalten Sie genau die Audio-Bitrate über mediainfo in bps:
$ mediainfo --Output='Audio;%BitRate%' '/MY/MEDIA/FILE.MP4'
oder in Kbps:
$ mediainfo --Output='Audio;%BitRate/String%' '/MY/MEDIA/FILE.MP4'


0

Hier ist eine Copy-Paste-Bash-Antwort mit avprobe (die mit avconv und vielleicht ffmpeg geliefert wird), falls Sie nur die Nummer wollen (für weitere Skripterstellung).

function bitrate () { avprobe -show_format "$1" 2> /dev/null | grep "bit_rate" | sed 's/.*bit_rate=\([0-9]\+\).*/\1/g'; }

Das funktioniert so. In dieser Zeile werden Informationen zur Datei abgerufen (zusätzliche Informationen zu stdout werden entfernt):

avprobe -show_format test.mp4 2> /dev/null

Dann grepwählt die Linie , die Bitrate erwähnt

grep "bit_rate"

Aus denen seddann extrahiert die Bitrate (in Bits / Sekunde)

sed 's/.*bit_rate=\([0-9]\+\).*/\1/g';

Lange Rede kurzer Sinn, kopieren Sie die Funktion in die erste Zeile und dann können Sie tun

$ bitrate test.mp4
593567

(Das ist kein qualitativ hochwertiges Video mit 593 kb / s, da die Bitrate anscheinend 1000 statt 1024 verwendet.)


0

Ich habe versucht, die gleichen Informationen zu erhalten, aber nur diese Daten, um sie in einer Bash-Schleife zu verwenden. Und ich habe sie! FFPROBE verwenden!

FFPROBE: hide_banner: Kopfzeileninfo verbergen, loglevel 0 gibt nur die erforderlichen Informationen an, select_streams gibt an, an welchem ​​Stream (Video) wir arbeiten, show_entries gibt an, welche Daten speziell wir möchten

fer @ FerPC: ~ / Downloads / TEMP $ ffprobe -hide_banner -loglevel 0 -of flat -i 'Eng_Sub_EP.1_1_4.mkv' -select_streams v -show_entries 'format = bit_rate'

Sie erhalten: format.bit_rate = "1085360"

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.