Làm cách nào tôi có thể lấy bitrate của video từ một dòng lệnh trong Linux?


18

Một công cụ dòng lệnh tốt để lấy bitrate video của tệp avi divx hoặc xvid cho linux là gì?


ffplayer hiển thị nitrate hiện tại trong khi phát video.
Biswapriyo

Câu trả lời:


16

Bạn có thể sử dụng MPlayer để có được thông tin đó.

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

Đặc biệt, bạn muốn -identifytùy chọn. Tùy chọn -frames 0yêu cầu nó không phát lại tệp và -vo null -ao nullcung cấp cho nó trình điều khiển null cho video và âm thanh (vì vậy bạn có thể sử dụng lệnh này qua SSH hoặc thiết bị đầu cuối không hỗ trợ X khác).

Bạn có thể kết hợp điều này với grephoặc các công cụ khác để lấy ra dòng cụ thể bạn muốn:

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

Đầu ra đầy đủ trông như thế này:

$ 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. trang web của mplayer là một cơn ác mộng ...
quack quixote

Đối với những người không biết, đây thực chất là những gì midentify.sh làm, kịch bản đi kèm với người chơi.
Jonah Braun

Các cờ cần được cập nhật. Tôi nhận được 'tùy chọn không hợp lệ -' o 'trong Ubuntu 13.04
hnns

17

ffmpeg hoạt động tốt:

ffmpeg -i file.avi

ffmpeg chiếm ưu thế trong đó mplayer thất bại.
dom0

Một số phân bố gần đây (Debian, Ubuntu 14) giảm ffmpeg và thay vào đó vận chuyển libav ngã ba của nó, vì vậy bạn có thể cần phải cài đặt libav-toolsvà chạy avconv -ithay vìffmpeg -i
Bain

Bạn có thể vui lòng hướng dẫn cho tôi rằng bitrate video sử dụng đầu ra mẫu nào sau đây không? Đầu vào # 0, flv, từ 'mi-cc-03-bed_and_b ERIC.flv': Thời lượng: 00: 00: 18.7, bắt đầu: 0,000000, bitrate: 64 kb / s Luồng # 0,0: Video: flv, yuv420p, 480x360, 29.92 fps (r) Luồng # 0.1: Âm thanh: mp3, 44100 Hz, âm thanh nổi, 64 kb / s Phải cung cấp ít nhất một tệp đầu ra
Zain Ali

5
avprobe -show_streams file.avi

1
Để hiển thị tốc độ bit tổng thể, bạn nên sử dụng -show_formattốt hơn hoặc thậm chí tốt hơn (trên * nix) avprobe -show_format file.avi | grep bit_rate. Cú pháp tương tự cũng sẽ làm việc cho ffprobe.
evilsoup

2

Đây là một công cụ khác thực hiện điều tương tự : tcprobe, là một phần của transcodegói. Sử dụng công -itắc để nhận kết xuất thông tin từ tệp (đầu ra mẫu từ cùng một tệp như trong mplayerví dụ):

$ 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

Nhận chính xác tốc độ bit video qua mediainfo :
$ mediainfo --Output='Video;%BitRate%' '/MY/MEDIA/FILE.MP4'
hoặc tính bằng Kbps:
$ mediainfo --Output='Video;%BitRate/String%'

Nhận chính xác bitrate âm thanh qua mediainfo trong bps:
$ mediainfo --Output='Audio;%BitRate%' '/MY/MEDIA/FILE.MP4'
hoặc tính bằng Kbps:
$ mediainfo --Output='Audio;%BitRate/String%' '/MY/MEDIA/FILE.MP4'


0

Dưới đây là câu trả lời bash sao chép bằng cách sử dụng avprobe (đi kèm với avconv và có thể là ffmpeg) trong trường hợp bạn chỉ muốn số (để biết thêm kịch bản)

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

Nó hoạt động như thế này. Dòng này nhận thông tin về tệp (xóa thông tin bổ sung trên thiết bị xuất chuẩn):

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

Sau đó grepchọn dòng có đề cập đến bitrate

grep "bit_rate"

Từ sedđó trích xuất bitrate (tính bằng bit / giây)

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

Câu chuyện dài, sao chép chức năng trong dòng đầu tiên và sau đó bạn có thể làm

$ bitrate test.mp4
593567

(đó không phải là video chất lượng cao, 593 kb / s, vì bitrate sử dụng 1000 thay vì 1024 rõ ràng)


0

Tôi đã cố gắng để có được thông tin tương tự nhưng chỉ cần dữ liệu đó để sử dụng nó trong một vòng lặp bash .. và tôi đã có nó! Sử dụng FFPROBE!

FFPROBE: hide_banner: ẩn thông tin tiêu đề, loglevel 0 chỉ cung cấp cho chúng tôi thông tin bắt buộc của chúng tôi, select_streams chỉ định luồng (video) nào chúng tôi đang làm việc, show_entries cho phép chúng tôi chỉ định dữ liệu cụ thể mà chúng tôi muốn

fer @ FerPC: ~ / Tải xuống / TEMP $ ffprobe-leather_banner -loglevel 0 -of Flat -i 'Eng_Sub_EP.1_1_4.mkv' -select_streams v -show_entries 'format = bit_rate'

bạn nhận được: format.bit_rate = "1085360"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.