Как изменить настройки ffmpeg-потоков

работы на трубка сайт. Я запускаю видео через ffmpeg на linux выделенный сервер для преобразования в mp4.

характеристики сервера:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 60
Stepping:              3
CPU MHz:               3491.749
BogoMIPS:              6983.49
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              8192K
NUMA node0 CPU(s):     0-7

проблема во время тестирования заключается в том, что даже при выполнении только 4-5 сразу загрузка сервера взлетает в среднем до 36. Это всего лишь один человек. Я думаю, когда он откроется, многие люди будут загружать сразу.

Кажется ffmpeg пытается использовать все ресурсы, доступные для преобразования.

Я слышал, что есть настройка a-threads, которую вы можете изменить, но я не могу ее найти. У меня 8 процессорных серверов. Он используется только для конверсий, поэтому я слышал, что лучшая настройка будет между 2 и 4. Я могу это протестировать.

но как изменить эту настройку? Все, что я вижу в интернете, обсуждает этот параметр, но не шаги по его изменению.

13
задан denjello
25.02.2023 7:38 Количество просмотров материала 2416
Распечатать страницу

2 ответа

опция флаг, который вы хотите на самом деле просто -threads и вы бы использовали его так (только для одного потока):

ffmpeg -i somefile.wmv -c:a libfdk_aac -c:v libx264  -threads 1 transcoded.mp4

тем не менее, есть довольно много тонкостей, которые поднимут нагрузку на сервер и время работы, такие как масштабирование, применение фильтров и окончательное качество кадров / частота кадров - не говоря уже о том, что некоторые архитектуры VM фактически читают и пишут все дважды (один раз изначально и один раз виртуально!!!)

вот несколько советов, чтобы получить скорость up:

  1. использовать очередь, так что только один элемент когда-либо транскодируется в то время
  2. запрос меньшие файлы от пользователей
  3. использовать полную мощность вашего компьютера по:
    • чтение и запись с ramdisk
    • переключение на голый металл для задач перекодирования
    • использовать -threads 0

что бы вы ни делали, держите своих пользователей в курсе процесса транскодирования, потому что это просто нужно время. (И. И. Т. Т.)

[отредактированная команда для отражения комментария LordNeckbeard]

17
отвечен denjello 2023-02-26 15:26

Это может быть немного старым, но это звучит как идеальная задача для контейнера, как docker.

  • пусть ffmpeg работает с full horsepower (как называл его денжелло)
  • но пусть работает внутри docker

теперь вы можете ограничить, сколько ресурсов может потреблять один экземпляр ffmpeg, даже не используя параметры командной строки ffmpeg. И не только процессор, но и память и IOs.

даже больше: может быть, у вас есть различные задачи, которые могут работать в фоновом режиме и вам все равно, сколько времени они занимают, и у вас есть задачи, которые должны работать быстро, поэтому вы можете положить вес на разные задачи.

посмотреть https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources

есть уже предопределенный пакет ffmpeg изображения на GitHub: https://github.com/jrottenberg/ffmpeg

docker run jrottenberg/ffmpeg \
        -i http://url/to/media.mp4 \
        -stats \
        $ffmpeg_options  - > out.mp4

одиночное преобразование, вероятно, будет выполняться медленнее из-за накладных расходов, но если вы запустите экземпляры mutliple одновременно это может принести огромную пользу. Любой это будет масштабироваться Очень хорошо, не говоря уже о повышении безопасности, потому что каждая задача изолирована от базовой ОС.

2
отвечен Jürgen Steinblock 2023-02-26 17:43

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх