如何在Linux的命令行中获取视频的比特率?


Answers:


16

您可以使用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)

1
ps。mplayer联机帮助页是一场噩梦 ...
quaq quixote 09年

对于那些不知道的人,本质上这就是mentplayer.sh(mplayer附带的脚本)所做的事情。
乔纳·布劳恩

这些标志需要更新。我在Ubuntu 13.04中收到“无效选项
-'o

17

ffmpeg正常工作:

ffmpeg -i file.avi

ffmpeg在mplayer失败的地方占上风。
dom0

最近的一些发行版本(Debian,Ubuntu 14)删除了ffmpeg,而是发布了它的libav fork,因此您可能需要安装libav-tools并运行,avconv -i而不是ffmpeg -i
bain

您能否使用以下示例输出指导我,视频比特率是多少?输入#0,flv,来自'mi-cc-03-bed_and_breakfast.flv':持续时间:00:00:18.7,开始:0.000000,比特率:64 kb / s流#0.0:视频:flv,yuv420p,480x360,29.92 fps(r)流#0.1:音频:mp3、44100 Hz,立体声,64 kb / s必须提供至少一个输出文件
Zain Ali

5
avprobe -show_streams file.avi

1
为了显示整体比特率,您最好使用-show_format,甚至更好(在* nix上)avprobe -show_format file.avi | grep bit_rate。ffprobe也可以使用相同的语法。
evilsoup

2

这是另一个执行相同功能的工具: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

2

获取准确的视频比特率通过的MediaInfo
$ mediainfo --Output='Video;%BitRate%' '/MY/MEDIA/FILE.MP4'
或Kbps的:
$ mediainfo --Output='Video;%BitRate/String%'

通过mediainfo以bps:
$ mediainfo --Output='Audio;%BitRate%' '/MY/MEDIA/FILE.MP4'
或Kbps 准确获得音频比特率:
$ mediainfo --Output='Audio;%BitRate/String%' '/MY/MEDIA/FILE.MP4'


0

这是一个使用avprobe(它与avconv以及ffmpeg一起提供)的复制粘贴bash答案,以防您只需要数字(用于进一步的脚本编写)

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

它是这样的。此行获取有关文件的信息(删除stdout上的额外信息):

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

然后grep选择提到比特率的行

grep "bit_rate"

sed然后从中提取比特率(以位/秒为单位)

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

长话短说,在第一行中复制函数,然后就可以

$ bitrate test.mp4
593567

(这不是593 kb / s的高质量视频,因为比特率显然使用1000而不是1024)


0

我一直在尝试获取相同的信息,但是只是要在bash循环中使用该数据..我知道了!使用FFPROBE!

FFPROBE:hide_banner:隐藏标题信息,日志级别0仅提供我们所需的信息,select_streams指定我们正在处理的流(视频),show_entries让我们指定我们想要的数据

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'

您将得到:format.bit_rate =“ 1085360”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.