Ffmpeg Nvidia GPU mkv 인코딩 출력 파일 크기

Ffmpeg Nvidia GPU mkv 인코딩 출력 파일 크기

저는 아래 환경에서 작업해왔습니다.

우분투 16.04.3

FFmpeg: 3.4.2

-- configuration: --prefix=/usr/local/ffmpeg_new/ --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-libvpx --enable-libvorbis --enable-libfreetype

쿠다 9.1.85

GPU: 지포스 GTX 1080ti

두 개의 미디어 파일이 있습니다: caller_video.webm(80MB) 및 callee_video.webm(120MB)

그런 다음 아래 명령을 통해 이 비디오의 오디오를 역다중화합니다.

time ffmpeg -y -i caller.webm -vn -ab 256 caller.wav

Caller.wav= 260MB

그런 다음 caller.wav파일을 다중화callee_video.webm

time ffmpeg -y -i callee_video.webm -i caller.wav -filter_complex '[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a1]; [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a2]; [a1][a2]amerge,pan=stereo|c0<c0+c2|c1<c1+c3[out]' -map 0:v -map '[out]' -c:v copy  tempfile.mkv

임시파일 파일 크기 : 87MB

그런 다음 아래 명령을 통해 임시 파일을 인코딩합니다.

time ffmpeg -y -i temp_file.mkv    -pixel_format yuv444p -preset default  -vf  drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:x=8:y=8:fontsize=16:fontcolor=yellow@1:expansion=strftime:basetime=1518172680000000:text='%Y-%m-%d %H-%M-%S'  -acodec libvorbis  -c:v h264_nvenc   final_video.mkv

Final_video 크기: 270MB

내가 이해하려고 하는 것은 orig webm80MB인 파일을 인코딩할 때 인코딩된 출력 mkv 파일 크기가 ~20MB라는 것입니다.

하지만 인코딩 전 크기가 87MB였던 다중화 임시 미디어 파일( callee_video.webm+ ) 에 동일한 작업을 수행하면 270MB가 됩니다.caller.wav

내가 놓치고 있거나 잘못하고 있는 것이 무엇입니까?

답변1

인코딩 명령에 대해 품질이나 비트 전송률 설정을 지정하지 않았으므로 이를 선택하는 것은 인코더에 달려 있습니다. 이로 인해 비트 전송률이 높아질 수 있습니다.

-b:v 1M1Mbit/s에서 단일 패스 평균 비트 전송률 인코딩을 사용하도록 지정할 수 있습니다 . 비트 전송률은 비디오 크기와 품질 요구 사항에 따라 달라집니다.

-qp 23QP 23에서 가변 비트 전송률 고정 품질 인코딩을 수행하는 데 사용할 수도 있습니다. QP가 높을수록 품질이 낮아지고 그 반대의 경우도 마찬가지입니다.

ffmpeg -h encoder=h264_nvenc인코더에 대한 가능한 옵션은 을 참조하십시오 .

관련 정보