3

Я обременен использованием ffmpeg для конвертации некоторых видео в старых окнах. К сожалению, мое приложение останавливается, когда запускается ffmpeg. Могут ли какие-либо эксперты по ffmpeg предложить какие-либо советы по производительности для оптимизации ffmpeg?

Вот аргументы, которые я предоставляю ffmpeg

['-i', _master, '-s', '720x540', '-sws_flags', 'lanczos', '-qscale:v', '1', '-y', _tempMaster]

На самом деле забыл 2 дополнительные операции

2 КОНКАТЕНАТ

['-i', "concat:" + _head + "|" + _tempMaster + "|" + _tail, '-c', 'copy', '-y', _concatALL] 

3 MUX С АУДИО И ТРАНСКОДОМ ВЫСОКОГО КАЧЕСТВА

['-i', _audio, '-i', _concatALL, '-vcodec', 'libx264', '-crf', '22', '-vf', 'hqdn3d=1:1:1:1,unsharp=2:2:.7:2:2:0.0', '-y', _finalOutput] 

1 ответ1

1
  • Фильтрация Ланцоша довольно дорогая. Можете ли вы попробовать другой фильтр изображения? fast_bilinear довольно быстр, по сравнению с lanczos, но немного снизит качество изображения. Просто замените lanczos на fast_bilinear и сравните.

  • Многое из того, что медленно работает с ffmpeg, связано с кодеками, и из параметров командной строки не ясно, какие muxers/demuxers/encoders/decoders/filters вы используете, кроме libswscale. Параметры кодеков во многом связаны с вычислительной сложностью видеообработки.

  • Убедитесь, что вы используете последнюю версию ffmpeg.

  • Попробуйте поменять libav/ffmpeg, чтобы посмотреть, поможет ли это. Они немного разошлись в последнее время.

  • Возможно, скомпилируйте новую версию ffmpeg из исходного кода, используя более продвинутый компилятор с Link Time Optimization и другие дорогостоящие оптимизации, такие как компилятор Visual Studio 2012 или Clang.

  • Если операционная система 64-битная, вы можете повысить производительность как минимум на 5-10%, используя 64-битную сборку ffmpeg. Дополнительные регистры ЦП определенно помогут с узкими контурами кодера или алгоритма изменения размера изображения. Я думаю, что на сегодняшний день все процессоры под брендом "i5" поддерживают 64-битную архитектуру, поэтому установка 64-битной ОС будет возможной, если вы используете 32-битную версию.

  • Если вам серьезно нужно сократить миллисекунды и у вас много времени и знаний о C, используйте профилировщик для определения времени отладочной сборки ffmpeg. Посмотрите, где (в каких методах / фильтрах / кодеках) он проводит большую часть своего времени. Посмотрите, сможете ли вы решить некоторые микрооптимизации или, возможно, сократить качество, чтобы ускорить его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .