Jak mogę uzyskać szybkość transmisji wideo z wiersza poleceń w systemie Linux?

18

Co to jest dobre narzędzie wiersza polecenia, aby uzyskać bitrate wideo pliku divx lub xvid avi dla systemu Linux?

Kyle Brandt
źródło
ffplayer pokazuje bieżący azotan podczas odtwarzania wideo.
Biswapriyo,

Odpowiedzi:

16

Możesz użyć MPlayera, aby uzyskać te informacje.

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

W szczególności chcesz tę -identifyopcję. Ta opcja -frames 0mówi, aby nie odtwarzał pliku, i -vo null -ao nullnadał mu zerowe sterowniki dla obrazu i dźwięku (abyś mógł użyć tego polecenia przez SSH lub inny terminal nie obsługujący X).

Możesz to połączyć z grepinnymi narzędziami, aby wyciągnąć określoną linię:

$ 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)

Pełny wynik wygląda następująco:

$ 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)
quack quixote
źródło
1
ps. strona mplayera to koszmar ...
quack quixote
Dla nieświadomych to właśnie robi midentify.sh, skrypt dostarczany z mplayerem.
Jonah Braun
Flagi muszą zostać zaktualizowane. Dostaję „niepoprawną opcję -„ o ”w Ubuntu 13.04
hnns
17

ffmpeg działa dobrze:

ffmpeg -i file.avi
mouviciel
źródło
ffmpeg ma pierwszeństwo w przypadku niepowodzenia mplayera.
dom0
Niektóre najnowsze dystrybucje (Debian, Ubuntu 14) upuściły ffmpeg i zamiast tego dostarczyły swój libav fork, więc może być konieczne zainstalowanie libav-toolsi uruchomienie avconv -izamiastffmpeg -i
bain
Czy możesz mi wskazać, co to jest szybkość transmisji wideo przy użyciu następujących danych wyjściowych? Wejdź # 0, flv, z 'mi-cc-03-bed_and_breakfast.flv': Czas trwania: 00: 00: 18,7, start: 0,000000, przepływność: 64 kb / s Strumień # 0,0: Wideo: flv, yuv420p, 480x360, 29,92 fps (r) Strumień # 0.1: Audio: mp3, 44100 Hz, stereo, 64 kb / s Musi dostarczyć co najmniej jeden plik wyjściowy
Zain Ali
5
avprobe -show_streams file.avi
Delcroip
źródło
1
Aby pokazać ogólną szybkość transmisji, lepiej byłoby użyć -show_format, a nawet lepiej (na * nix) avprobe -show_format file.avi | grep bit_rate. Ta sama składnia będzie działać również dla ffprobe.
evilsoup
2

Oto kolejne narzędzie, które robi to samo: tcprobektóre jest częścią transcodepakietu. Użyj -iprzełącznika, aby uzyskać zrzut informacji z pliku (przykładowe wyjście z tego samego pliku, co w mplayerprzykładzie):

$ 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
quack quixote
źródło
2

Uzyskaj dokładnie bitrate wideo za pośrednictwem mediainfo :
$ mediainfo --Output='Video;%BitRate%' '/MY/MEDIA/FILE.MP4'
lub w Kbps:
$ mediainfo --Output='Video;%BitRate/String%'

Uzyskaj dokładnie bitrate audio przez mediainfo w bps:
$ mediainfo --Output='Audio;%BitRate%' '/MY/MEDIA/FILE.MP4'
lub w Kbps:
$ mediainfo --Output='Audio;%BitRate/String%' '/MY/MEDIA/FILE.MP4'

superqwerty
źródło
0

Oto odpowiedź bash kopiuj-wklej za pomocą avprobe (która jest dostarczana z avconv i być może ffmpeg) na wypadek, gdybyś chciał tylko numer (do dalszego skryptu)

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

Działa to w ten sposób. Ta linia pobiera informacje o pliku (usuwanie dodatkowych informacji na stdout):

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

Następnie grepwybiera linię, która wspomina bitrate

grep "bit_rate"

Z którego sednastępnie pobiera bitrate (w bitach / sekundę)

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

Krótko mówiąc, skopiuj funkcję w pierwszym wierszu i możesz to zrobić

$ bitrate test.mp4
593567

(to nie jest wideo wysokiej jakości, 593 kb / s, ponieważ bitrate z pozoru używa 1000 zamiast 1024)

znak
źródło
0

Próbowałem uzyskać te same informacje, ale tylko te dane, aby użyć ich w pętli bash .. i mam to! Korzystanie z FFPROBE!

FFPROBE: hide_banner: ukryj informacje nagłówka, loglevel 0 daje nam tylko wymagane informacje, select_streams określ, nad którym strumieniem (wideo) pracujemy, show_entries pozwala nam określić, które dane konkretnie chcemy

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

otrzymujesz: format.bit_rate = "1085360"

Fernando Guerra
źródło