Можно ли с помощью FFmpeg перекодировать различные видео в H.264 как почти одинакового качества?

У меня есть несколько видеороликов, снятых с разных ресурсов, но с использованием разных видео / аудиокодеков, битрейта и разрешения.

Вот пример:

  • видео: WMV3, битрейт: 6 Мбит / с, аудио: WMA, формат: WMV
  • видео: H.263, битрейт: 30 Мбит / с, аудио: MP3, формат: AVI
  • видео: H.264, битрейт: 20 Мбит / с, аудио: AAC, формат: MKV

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

Итак, возможно ли преобразовать все эти видео в H.264 и AAC с форматом MP4 и сохранить то же качество видео, что и исходное?

Или, может быть, проблема в том, что существует сопоставление битрейта между двумя аудио- или видеокодеками, что-то вроде (я придумал, просто пример) h.263 10 Мбит / с ≈ h.264 6 Мбит / с?


person BH4EHN    schedule 09.10.2018    source источник


Ответы (1)


Кодировщик libx264 имеет режим управления скоростью CRF, который, грубо говоря, делает именно это.

ffmpeg -i in -c:v libx264 -crf 23 -c:a copy out

Более низкие CRF сохраняют лучшее качество за счет файлов большего размера. От 18 до 28 - вполне приличный диапазон.

person Gyan    schedule 09.10.2018
comment
Спасибо за ответ. Но моя проблема в том, что все эти видео имеют разное качество видео, некоторые видео имеют контент 1080 с очень высоким битрейтом, другие могут быть контентом 480p с низким битрейтом. Может ли этот вариант подойти обеим ситуациям? - person BH4EHN; 10.10.2018
comment
да. Битрейт будет адаптирован для соответствия требованиям качества. - person Gyan; 10.10.2018