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

34563
Kyle Brandt

Was ist ein gutes Befehlszeilentool, um die Videobitrate einer divx- oder xvid-avi-Datei für Linux zu erhalten?

18
Der ffplayer zeigt das aktuelle Nitrat während der Videowiedergabe. Biswapriyo vor 6 Jahren 0

6 Antworten auf die Frage

16
quack quixote

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 sie an, die Datei nicht abzuspielen und -vo null -ao nullnull Treiber für Video und Audio zu verwenden (damit Sie diesen Befehl über SSH oder ein anderes Terminal ohne X-Unterstützung verwenden können).

Sie können dies mit grepoder mit anderen Tools kombinieren, um die gewünschte Zeile 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 volle 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) 
ps. Die Mplayer-Manpage ist ein * Alptraum * ... quack quixote vor 14 Jahren 1
Für diejenigen, die es nicht wissen, macht midentify.sh das Skript, das im Lieferumfang von mplayer enthalten ist. Jonah Braun vor 12 Jahren 0
Die Flags müssen aktualisiert werden. Ich bekomme eine "ungültige Option" - "o" in Ubuntu 13.04 hnns vor 10 Jahren 0
16
mouviciel

ffmpeg funktioniert gut:

ffmpeg -i file.avi 
ffmpeg herrscht dort vor, wo mplayer ausfällt. dom0 vor 9 Jahren 0
Bei einigen kürzlich erschienenen Distributionen (Debian, Ubuntu 14) wurde ffmpeg gelöscht und stattdessen der libav-Fork ausgeliefert. Daher müssen Sie möglicherweise `libav-tools` installieren und` avconv -i` anstelle von `ffmpeg -i` ausführen bain vor 9 Jahren 0
Können Sie mir bitte sagen, was die Video-Bitrate anhand der folgenden Beispielausgabe ist? Eingabe # 0, flv, von 'mi-cc-03-bed_and_breakfast.flv': Dauer: 00: 00: 18.7, Start: 0.000000, Bitrate: 64 kb / s Stream # 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 bereitstellen Zain Ali vor 7 Jahren 0
5
delcroip
avprobe -show_streams file.avi 
Um die allgemeine Bitrate anzuzeigen, ist es besser, `-show_format` oder besser (bei * nix)` avprobe -show_format file.avi | grep bit_rate`. Dieselbe Syntax funktioniert auch für ffprobe. evilsoup vor 10 Jahren 1
2
quack quixote

Hier ist ein weiteres Tool, das dasselbe tut: Das tcprobeist Teil des transcodePakets. 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 
1
superqwerty

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

Holen Sie sich 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
Mark

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

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

So funktioniert es. Diese Zeile enthält Informationen über die Datei (das Entfernen zusätzlicher Informationen zu stdout):

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 Geschichte kurz, kopiere die Funktion in die erste Zeile und dann kannst du das machen

$ bitrate test.mp4 593567 

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