FFmpeg: проблемы с кодировщиком h264_qsv и crf
Я только что узнал о FFmpeg при записи геймплея на Bandicam с использованием кодека H.264 (Intel Quick Sync). К сожалению, одно из моих видео оказалось записанным в обертке AVI, и я хотел перекодировать его в MP4 в несколько без потерь
Причина, по которой я хочу сменить оболочки, заключается в том, что Adobe Premiere Pro CC 2017 почему-то плохо обрабатывает AVI, а при экспорте с использованием H.264 и MP4 в качестве оболочки все видео выглядит просто испорченным.
Итак, я беру FFmpeg и пытаюсь перекодировать мое видео с помощью следующей команды:
ffmpeg -i vid.avi -c:v h264_qsv -crf 10 -r 50 -c:a aac -b:a 192k -ac 2 vid.mp4
Ошибка, которая появляется в желтом цвете:
Codec AVOption crf (Select the quality for constant quality mode) specified for output file #0 (vid.mp4) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Я вполне уверен, что H.264 (Intel Quick Sync) имеет поддержку CRF, или я могу быть очень не прав и перепутать H.264 (QSV) и libx264, которые, очевидно, поддерживают CRF.
Что-нибудь вокруг этого? У меня есть FFmpeg вер. 20170921-183fd30, 64-разрядная, статическая.
Изменить: Обходной путь, чтобы вернуться к libx264 и запустить faster
, veryfast
или же superfast
, но я все же хотел бы сэкономить немного времени с помощью Intel Quick Sync.
1 ответ
Кодировщик QSV не имеет параметра с именем CRF. Эквивалентный метод управления скоростью - LA_ICQ.
https://software.intel.com/en-us/articles/common-bitrate-control-methods-in-intel-media-sdk:
Регулятор скорости по умолчанию для x264 (стандартная реализация FFmpeg для h264) - CRF. Это позволяет колебаниям битрейта поддерживать целевой уровень качества. Media SDK ICQ и LA_ICQ - лучшее соответствие для этого класса алгоритмов.
Чтобы вызвать его, нужна команда вида:
ffmpeg -i in.mp4 -c:v h264_qsv -global_quality 10 -look_ahead 1 out.mp4
look_ahead
должно быть 1
, global_quality
может быть от 1 до 51. Чем ниже значение, тем лучше качество. ~25 должно быть эквивалентно x264 CRF 23.