18
5
What is a good command line tool to get the video bitrate of a divx or xvid avi file for linux?
18
5
What is a good command line tool to get the video bitrate of a divx or xvid avi file for linux?
16
You can use MPlayer to get that information.
$ mplayer -vo null -ao null -identify -frames 0 foo.avi
In particular, you want the -identify
option. The option -frames 0
tells it not to playback the file, and -vo null -ao null
give it null drivers for video & audio (so you can use this command via SSH or another non-X-enabled terminal).
You can combine this with grep
or other tools to pull out the specific line you want:
$ 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)
The full output looks like this:
$ 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)
For those unaware, this is essentially what midentify.sh does, the script which ships with mplayer. – Jonah Braun – 2011-11-13T23:41:04.997
1ps. the mplayer manpage is a nightmare ... – quack quixote – 2009-10-15T15:18:51.010
The flags need to be updated. I get 'invalid option -- 'o' in Ubuntu 13.04 – hnns – 2013-08-19T19:53:40.180
17
ffmpeg works fine:
ffmpeg -i file.avi
ffmpeg prevails where mplayer fails. – dom0 – 2014-08-25T18:43:13.477
Some recent distributions (Debian, Ubuntu 14) dropped ffmpeg and instead shipped its libav fork, so you might need to install libav-tools
and run avconv -i
instead of ffmpeg -i
– bain – 2015-01-22T17:08:43.030
Can you please guide me that what is video bitrate using following sample output?
Input #0, flv, from 'mi-cc-03-bed_and_breakfast.flv': Duration: 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 Must supply at least one output file – Zain Ali – 2016-07-28T08:05:43.907
5
avprobe -show_streams file.avi
1To show the overall bit rate, you'd be better off using -show_format
, or even better (on *nix) avprobe -show_format file.avi | grep bit_rate
. The same syntax will also work for ffprobe. – evilsoup – 2013-06-25T19:23:15.663
2
Get exactly the video bitrate via mediainfo:
$ mediainfo --Output='Video;%BitRate%' '/MY/MEDIA/FILE.MP4'
or in Kbps:
$ mediainfo --Output='Video;%BitRate/String%'
Get exactly the audio bitrate via mediainfo in bps:
$ mediainfo --Output='Audio;%BitRate%' '/MY/MEDIA/FILE.MP4'
or in Kbps:
$ mediainfo --Output='Audio;%BitRate/String%' '/MY/MEDIA/FILE.MP4'
2
Here's another tool that does the same thing: tcprobe
, which is part of the transcode
package. Use the -i
switch to get an info dump from the file (sample output from the same file as in the mplayer
example):
$ 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
0
I've been trying to get same info but just that data to use it in a bash loop .. and I've got it ! Using FFPROBE !
FFPROBE : hide_banner : hide header info, loglevel 0 give us only our required info, select_streams specify which stream (video) we're working on , show_entries let us specify which data specifically we want
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'
you get : format.bit_rate="1085360"
0
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)
ffplayer shows the current nitrate while playing video. – Biswapriyo – 2017-08-03T08:21:48.920