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

CUDA 9.1.85

顯示卡:GeForce 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 大小:270 MB

我想要理解的是,當我編碼orig webm80MB 的檔案時,編碼輸出 mkv 檔案大小 ~20MB 。

callee_video.webm然而,當我對混合臨時媒體檔案( + )執行相同的操作時,caller.wav編碼前大小為 87MB,變為 270MB。

我錯過了什麼或做錯了什麼?

答案1

您尚未為編碼命令指定任何品質或位元率設置,因此由編碼器來選擇。這可能會導致更大的比特率。

您可以指定-b:v 1M使用 1 Mbit/s 的單通道平均位​​元率編碼。比特率取決於影片的大小和您的品質要求。

您也可以使用-qp 23QP 23 執行可變位元率固定品質編碼。

請參閱ffmpeg -h encoder=h264_nvenc參考資料 編碼器的可能選項。

相關內容