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ì?
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ì?
Câu trả lời:
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 -identify
tùy chọn. Tùy chọn -frames 0
yêu cầu nó không phát lại tệp và -vo null -ao null
cung 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 grep
hoặ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)
ffmpeg hoạt động tốt:
ffmpeg -i file.avi
libav-tools
và chạy avconv -i
thay vìffmpeg -i
Đâ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 transcode
gói. Sử dụng công -i
tắ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 mplayer
ví 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
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'
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 đó grep
chọ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)
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"