ffmpeg Nvidia GPU mkv 编码输出文件大小

ffmpeg Nvidia GPU mkv 编码输出文件大小

我一直在以下环境下工作。

Ubuntu 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= 260 MB

然后,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

最终视频大小:270 MB

我想要了解的是,当我编码orig webm80MB 的文件时,编码后的输出 mkv 文件大小约为 20MB。

callee_video.webm然而,当我对多路复用临时媒体文件( + )执行相同操作时,caller.wav其大小在编码前为 87MB,现在变成了 270MB。

我遗漏了什么或者做错了什么?

答案1

您尚未为编码命令指定任何质量或比特率设置,因此由编码器自行选择。这可能会导致比特率更高。

您可以指定-b:v 1M使用 1 Mbit/s 的单次平均比特率编码。比特率取决于视频的大小和您的质量要求。

您还可以使用-qp 23它以 QP 23 执行可变比特率固定质量编码。QP 越高,质量越低,反之亦然。

ffmpeg -h encoder=h264_nvenc参阅编码器的可能选项。

相关内容