Размер выходного файла кодирования mkv ffmpeg Nvidia GPU

Размер выходного файла кодирования mkv ffmpeg Nvidia GPU

Я работал с нижеперечисленной средой.

Убунту 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 (80 МБ) и callee_video.webm (120 МБ)

Затем я демультиплексирую аудио из этих видео с помощью следующей команды:

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

Caller.wav= 260 МБ

Затем, микширование 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

Размер файла tempfile: 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 МБ

Я пытаюсь понять, что когда я кодирую файл orig webmразмером 80 МБ, размер закодированного выходного mkv-файла составляет ~20 МБ.

Однако, когда я выполнил ту же операцию с мультиплексированным временным медиафайлом ( callee_video.webm+ caller.wav), размер которого до кодирования составлял 87 МБ, стал равен 270 МБ.

Что я упускаю или делаю неправильно?

решение1

Вы не указали никаких настроек качества или битрейта для вашей команды кодирования, поэтому выбор остается за кодером. Это может привести к большему битрейту.

Вы можете указать -b:v 1Mиспользовать однопроходное кодирование со средним битрейтом 1 Мбит/с. Битрейт будет зависеть от размера видео и ваших требований к качеству.

Вы также можете использовать его -qp 23для выполнения кодирования с переменным битрейтом и фиксированным качеством при QP 23. Более высокий QP означает более низкое качество и наоборот.

ffmpeg -h encoder=h264_nvencВозможные варианты кодировщика см .

Связанный контент