ffmpeg генерирует изображения более высокого качества для кодирования MJPEG

у меня есть куча файлов mov / H. 264, которые я хотел бы закодировать в mov/MJPEG. Однако я получаю очень низкое качество продукции. Вот что я попробовал:

ffmpeg -i a.mov -an -crf 11 -preset slower -pix_fmt yuv420p -vcodec mjpeg -f mov -y b.mov

для кодирования H. 264 -crf и -preset флаги генерируют более высокое качество. Но это, похоже, не работает для MJPEG.

1 ответов


использовать -q:v

по умолчанию для MJPEG ffmpeg будет, вероятно, использовать значение по умолчанию:-b:v 200k. Это было хорошо, когда он был установлен по умолчанию более 10 лет назад (я предполагаю возраст), но не больше.

можно использовать -q:v вместо. для MJPEG эффективный диапазон линейный масштаб 2-31, и более низкое значение приведет к в более высокомарочном выходе.

если вы хотите применить оптимизацию Хаффмана, добавьте -huffman optimal. Это может привести к несколько меньший размер выходного файла.

пример

ffmpeg -i input.mov -c:v mjpeg -q:v 3 -huffman optimal -an output.mov

частные варианты

кодировщик MJPEG не использует -crf и -preset, эти "частные" варианты для некоторых кодеров. Вы можете увидеть частные варианты, как это:ffmpeg -h encoder=mjpeg.