Есть задача закодировать исходное видео (
sample01,
sample02) с уменьшением размера до 480х384 и битрейтом 310. Если быть точным, то параметры получаемого видео должны быть такими:
Видео
Размер кадра: 480х384
Кодек: h264
Профиль: Baseline 3.0
ReFrames: 3
Битрейт: 310 Kbps, Переменный
Аудио
Кодек: АСС
Битрейт: 128 к
Частота: 48000
Профиль, к сожалению, должен быть обязательно не более Baseline 3.0. Битрейт тоже повышать не желательно.
Версия ffmpeg N-71608-ga924b83
После некоторых экспериментов с параметрами ffmpeg получилась такая строка, кодирующая видео в один проход:
ffmpeg.exe -hide_banner -i sample01.ts -vf scale=480:384 -sws_flags lanczos -vcodec h264 -profile:v baseline -level 3.0 -g 25 -x264opts me=tesa -me_range 32 -subq 9 -deblock 3:2 -b:v 310k -minrate 300k -maxrate 350k -bufsize 4000k -acodec libvo_aacenc -ab 128k -ar 48000 -f mpegts sample01_lq_1p.ts
Результат получился приемлемым (
sample01_lq_1p,
sample02_lq_1p), но нет предела совершенству, и хотелось бы вытянуть из столь низкого битрейта наиболее возможное качество. Была попытка сделать это с помощью 2х проходного кодирования такой строкой:
ffmpeg.exe -hide_banner -i sample01.ts -vf scale=480:384 -sws_flags lanczos -vcodec h264 -profile:v baseline -level 3.0 -g 25 -x264opts me=tesa -me_range 32 -subq 9 -deblock 3:2 -b:v 310k -minrate 300k -maxrate 350k -bufsize 4000k -pass 1 -fastfirstpass 0 -passlogfile stat01 -an -f mpegts -y NUL && ffmpeg.exe -hide_banner -i sample01.ts -vf scale=480:384 -sws_flags lanczos -vcodec h264 -profile:v baseline -level 3.0 -g 25 -x264opts me=tesa -me_range 32 -subq 9 -deblock 3:2 -b:v 310k -minrate 300k -maxrate 350k -bufsize 4000k -pass 2 -passlogfile stat01 -acodec libvo_aacenc -ab 128k -ar 48000 -f mpegts sample01_lq_2p.ts
Результат разочаровал. (
sample01_lq_2p,
sample02_lq_2p)Качество изображения стало хуже, явно вылезли jpeg-аретфакты. Это особенно заметно на первых кадрах ролика sample01_lq_2p, там где бегут цифры.
Подскажите, что поправить в параметрах кодирования ffmpeg, и как улучшить качество получаемого видео.
Данная строка получена эмпирическим путём, с помощью чтения документации и примеров, может я что-то упустил или может быть, в данном случае, второй проход не поможет?