3

После тестирования многих возможностей у меня есть идеальная командная строка для создания миниатюр из прямой трансляции:

ffmpeg -i rtmp://srvIp/h264.stream -r 1 -an -updatefirst 1 -y thumbnail.jpg

Он обновляет JPG каждую секунду, и веб-сервер HTTP без проблем использует JPG, показывая его веб-клиентам.

Единственная проблема: каждая команда использует от 5 до 10% процессорного времени. Если мне нужны миниатюры из 20 каналов, у процессора нет на это мощности. FFmpeg, вероятно, активно декодирует все кадры.

Есть ли способ оптимизировать эту команду и как-то сказать FFmpeg пропустить все кадры между необходимыми. Я пробовал это фильтры:

  1. -vf fps=fps=1
  2. -vf "'select=eq(pict_type,I)'"
  3. используя 1/5 или 1/10 качестве FPS

Но это никак не повлияло на загрузку процессора, только качество изображения хуже с (2) по сравнению с исходной командой (-r 1).

Я в порядке с одним уменьшенным изображением в секунду (или извлекающим только ключевые кадры), и одно уменьшенное изображение в 10 секунд также хорошо, но я думаю, что реальная проблема, вероятно, заключается в декодировании H.264.

0