Linuxのコマンドラインからビデオのビットレートを取得するにはどうすればよいですか?


18

Linux用のdivxまたはxvid aviファイルのビデオビットレートを取得するための良いコマンドラインツールは何ですか?


ffplayerは、ビデオの再生中に現在の硝酸塩を表示します。
ビスワプリヨ

回答:


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
追伸 MPlayerのmanページは、悪夢 ...
キホーテいんちき

気付いていない人にとって、これは本質的にmidentify.shが行うことで、mplayerに同梱されているスクリプトです。
ジョナブラウン

フラグを更新する必要があります。Ubuntu 13.04で '無効なオプション-' o 'が表示されます
hnns

17

ffmpegは正常に動作します。

ffmpeg -i file.avi

mplayerが失敗する場所では、ffmpegが優先されます。
dom0 14

いくつかの最近のディストリビューション(Debianの、Ubuntuの14)をインストールする必要があるかもしれませんので、ffmpegのを落とし、代わりにそののLibavフォークを出荷libav-toolsし、実行するavconv -i代わりにはffmpeg -i
ベイン

次のサンプル出力を使用したビデオビットレートとは何かを教えてください。入力#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少なくとも1つの出力ファイルを提供する必要があります
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%'

bps: またはKbps:でmediainfoを介して音声ビットレートを正確に取得
$ mediainfo --Output='Audio;%BitRate%' '/MY/MEDIA/FILE.MP4'
します。
$ 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

(ビットレートは明らかに1024ではなく1000を使用するため、593 kb / sの高品質ビデオではありません)


0

私は同じ情報を取得しようとしましたが、そのデータだけをbashループで使用します.. FFPROBEを使用する!

FFPROBE:hide_banner:ヘッダー情報を非表示、loglevel 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"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.