Linux의 명령 줄에서 비디오의 비트 전송률을 어떻게 얻을 수 있습니까?


18

Linux 용 divx 또는 xvid avi 파일의 비디오 비트 전송률을 얻는 좋은 명령 줄 도구는 무엇입니까?


ffplayer는 비디오를 재생하는 동안 현재 질산염을 보여줍니다.
Biswapriyo

답변:


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 맨 페이지는 악몽입니다 ...
quack quixote

모르는 사람들에게는 이것이 mplayer와 함께 제공되는 스크립트 인 midentify.sh가 본질적으로하는 일입니다.
Jonah Braun

플래그를 업데이트해야합니다. 우분투 13.04에서 '유효하지 않은 옵션
-'o

17

ffmpeg는 잘 작동합니다.

ffmpeg -i file.avi

mplayer가 실패하면 ffmpeg가 우선합니다.
dom0

일부 최신 배포판 (Debian, Ubuntu 14)은 ffmpeg를 삭제하고 대신 libav 포크를 배송 했으므로 대신 설치 libav-tools하여 실행 해야 할 수도 있습니다.avconv -iffmpeg -i
bain

다음 샘플 출력을 사용하여 비디오 비트 전송률이 무엇인지 안내해 주시겠습니까? 'mi-cc-03-bed_and_breakfast.flv'에서 입력 # 0, 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 2016 년

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 :
$ 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'; }

이렇게 작동합니다. 이 줄은 파일에 대한 정보를 얻습니다 (표준 출력에서 ​​추가 정보 제거).

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.