Bagaimana saya bisa mendapatkan bitrate video dari baris perintah di Linux?

18

Apa alat baris perintah yang baik untuk mendapatkan bitrate video dari file divx atau xvid avi untuk linux?

Kyle Brandt
sumber
ffplayer menampilkan nitrat saat ini saat memutar video.
Biswapriyo

Jawaban:

16

Anda dapat menggunakan MPlayer untuk mendapatkan informasi itu.

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

Secara khusus, Anda menginginkan -identifyopsi. Opsi -frames 0memberi tahu untuk tidak memutar file, dan -vo null -ao nullmemberikannya null driver untuk video & audio (sehingga Anda dapat menggunakan perintah ini melalui SSH atau terminal non-X-enabled lainnya).

Anda dapat menggabungkan ini dengan grepatau alat lain untuk menarik garis tertentu yang Anda inginkan:

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

Output lengkapnya terlihat seperti ini:

$ 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
sumber
1
ps. halaman web mplayer adalah mimpi buruk ...
quack quixote
Bagi mereka yang tidak sadar, ini pada dasarnya adalah apa yang dilakukan midentify.sh, skrip yang dikirimkan bersama mplayer.
Jonah Braun
Bendera perlu diperbarui. Saya mendapatkan 'opsi tidak valid -' o 'di Ubuntu 13.04
hnns
17

ffmpeg berfungsi dengan baik:

ffmpeg -i file.avi
mouviciel
sumber
ffmpeg berlaku di mana mplayer gagal.
dom0
Beberapa distribusi terbaru (Debian, Ubuntu 14) menjatuhkan ffmpeg dan sebagai gantinya mengirimkan garpu libavnya, jadi Anda mungkin perlu menginstal libav-toolsdan menjalankan avconv -ialih-alihffmpeg -i
bain
Bisakah Anda membimbing saya bahwa apa itu bitrate video menggunakan output sampel berikut? Masukan # 0, flv, dari 'mi-cc-03-bed_and_breakfast.flv': Durasi: 00: 00: 18.7, mulai: 0.000000, bitrate: 64 kb / s Stream # 0.0: Video: flv, yuv420p, 480x360, 29.92 fps (r) Streaming # 0.1: Audio: mp3, 44100 Hz, stereo, 64 kb / s Harus menyediakan setidaknya satu file keluaran
Zain Ali
5
avprobe -show_streams file.avi
delcroip
sumber
1
Untuk menunjukkan laju bit keseluruhan, Anda akan lebih baik menggunakan -show_format, atau bahkan lebih baik (di * nix) avprobe -show_format file.avi | grep bit_rate. Sintaks yang sama juga akan berfungsi untuk ffprobe.
evilsoup
2

Berikut alat lain yang melakukan hal yang sama:, tcprobeyang merupakan bagian dari transcodepaket. Gunakan -iswitch untuk mendapatkan info dump dari file (sampel output dari file yang sama seperti pada mplayercontoh):

$ 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
sumber
2

Dapatkan bitrate video persis melalui mediainfo :
$ mediainfo --Output='Video;%BitRate%' '/MY/MEDIA/FILE.MP4'
atau dalam Kbps:
$ mediainfo --Output='Video;%BitRate/String%'

Dapatkan bitrate audio secara tepat melalui mediainfo dalam bps:
$ mediainfo --Output='Audio;%BitRate%' '/MY/MEDIA/FILE.MP4'
atau dalam Kbps:
$ mediainfo --Output='Audio;%BitRate/String%' '/MY/MEDIA/FILE.MP4'

superqwerty
sumber
0

Berikut adalah jawaban bash copy-paste menggunakan avprobe (yang datang dengan avconv dan mungkin ffmpeg) jika Anda ingin hanya nomor (untuk skrip lebih lanjut)

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

Ini berfungsi seperti ini. Baris ini mendapat info tentang file (menghapus info tambahan di stdout):

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

Kemudian greppilih baris yang menyebutkan bitrate

grep "bit_rate"

Dari mana sedkemudian ekstrak bitrate (dalam bits / detik)

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

Singkat cerita, salin fungsi di baris pertama dan kemudian Anda bisa melakukannya

$ bitrate test.mp4
593567

(itu bukan video berkualitas tinggi, 593 kb / s, karena bitrate menggunakan 1000, bukannya 1024)

Menandai
sumber
0

Saya sudah mencoba untuk mendapatkan info yang sama tetapi hanya data untuk menggunakannya dalam bash loop .. dan saya sudah mendapatkannya! Menggunakan FFPROBE!

FFPROBE: hide_banner: sembunyikan info tajuk, loglevel 0 beri kami hanya info yang diperlukan, select_streams tentukan aliran mana (video) yang sedang kami kerjakan, show_entries izinkan kami menentukan data mana yang kami inginkan secara khusus

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

Anda mendapatkan: format.bit_rate = "1085360"

Fernando Guerra
sumber