Как я могу получить битрейт видео из командной строки в Linux?

34559
Kyle Brandt

Что такое хороший инструмент командной строки, чтобы получить видео битрейт файла DivX или XVID AVI для Linux?

18
ffplayer показывает текущий нитрат во время воспроизведения видео. Biswapriyo 7 лет назад 0

6 ответов на вопрос

16
quack quixote

Вы можете использовать MPlayer для получения этой информации.

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

В частности, вы хотите -identifyвариант. Опция -frames 0запрещает воспроизведение файла и -vo null -ao nullдает ему нулевые драйверы для видео и аудио (так что вы можете использовать эту команду через SSH или другой терминал без поддержки X).

Вы можете комбинировать это с grepдругими инструментами, чтобы выделить нужную вам строку:

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

Полный вывод выглядит так:

$ 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) 
пс. man-страница mplayer - это * кошмар * ... quack quixote 15 лет назад 1
Для тех, кто не знает, это по сути то, что делает midentify.sh, скрипт, который поставляется с mplayer. Jonah Braun 13 лет назад 0
Флаги должны быть обновлены. Я получаю 'недопустимый параметр -' o 'в Ubuntu 13.04 hnns 11 лет назад 0
16
mouviciel

ffmpeg работает нормально:

ffmpeg -i file.avi 
ffmpeg преобладает там, где mplayer терпит неудачу. dom0 10 лет назад 0
В некоторых последних дистрибутивах (Debian, Ubuntu 14) упал ffmpeg, и вместо этого он отправил свой libav форк, поэтому вам может потребоваться установить `libav-tools` и запустить` avconv -i` вместо `ffmpeg -i` bain 9 лет назад 0
Подскажите, пожалуйста, что такое битрейт видео, используя следующий пример вывода? Вход # 0, flv, из 'mi-cc-03-bed_and_breakfast.flv': Длительность: 00: 00: 18.7, старт: 0,000000, битрейт: 64 кбит / с Поток # 0.0: Видео: flv, yuv420p, 480x360, 29,92 fps (r) Stream # 0.1: Аудио: mp3, 44100 Гц, стерео, 64 кбит / с. Должен предоставить как минимум один выходной файл Zain Ali 8 лет назад 0
5
delcroip
avprobe -show_streams file.avi 
Чтобы показать общую скорость передачи данных, вам лучше использовать `-show_format` или даже лучше (на * nix)` avprobe -show_format file.avi | grep bit_rate`. Тот же синтаксис также будет работать для ffprobe. evilsoup 11 лет назад 1
2
quack quixote

Вот еще один инструмент, который делает то же самое: tcprobeэто часть transcodeпакета. Используйте -iпереключатель, чтобы получить информационный дамп из файла (пример вывода из того же файла, что и в mplayerпримере):

$ 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

Получите точно битрейт видео через mediainfo :
$ mediainfo --Output='Video;%BitRate%' '/MY/MEDIA/FILE.MP4'
или в кбит / с:
$ mediainfo --Output='Video;%BitRate/String%'

Получить именно аудио битрейт через mediainfo в бит / с:
$ mediainfo --Output='Audio;%BitRate%' '/MY/MEDIA/FILE.MP4'
или в кбит / с:
$ mediainfo --Output='Audio;%BitRate/String%' '/MY/MEDIA/FILE.MP4'

0
Mark

Here is a copy-paste bash answer using avprobe (which comes with avconv and maybe ffmpeg) in case you want only the number (for further scripting)

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

It works like this. This line gets info about the file (removing extra info on stdout):

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

Then grep selects the line which mentions bitrate

grep "bit_rate" 

From which sed then extracts the bitrate (in bits/second)

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

Long story short, copy the function in the first line and then you can do

$ bitrate test.mp4 593567 

(that's not a high-quality video, 593 kb/s, since bitrate uses 1000 instead of 1024 apparently)

Похожие вопросы