2017-02-17 8 views
0

привета Я restreaming потока Hls как HLS потокКак уменьшить использование процессора ffmpeg?

SETLOCAL 
:loop 

ffmpeg -thread_queue_size 32768 -i "http://xx/636.m3u8" -f hls -hls_time 5 -hls_list_size 5 -hls_allow_cache 0 -hls_flags delete_segments -segment_list_flags +live -hls_base_url "../ts/" -hls_segment_filename "C:\nginx\html\ts\lig-%random%%random%-%%3d.svgz" -y "C:\nginx\html\hls\lig1.m3u8" > log.txt 

goto loop 

но он использует% 15-20 процессор я должен сделать 16 потоков, как, что в одном сервере, но я не могу.

Не могу создать конфигурацию, как только загрузка файлов .ts, клонирующих m3u8?

+0

Этот вопрос не имеет ничего общего с программированием и принадлежит SuperUser.com. – Brad

ответ

3

По умолчанию FFmpeg попытается переустановить вход, даже если вы не используете какие-либо параметры, связанные с кодировкой.

Если вы хотите просто скопировать поток, как есть, вы должны попробовать функцию копирование потока:

-c:v copy -c:a copy

При копировании входящих потоков, вы можете пропустить процесс кодирования полностью. Так что ваша команда будет выглядеть следующим образом:

ffmpeg -thread_queue_size 32768 -i "http://xx/636.m3u8" -f hls -c:v copy -c:a copy -hls_time 5 -hls_list_size 5 -hls_allow_cache 0 -hls_flags delete_segments -segment_list_flags +live -hls_base_url "../ts/" -hls_segment_filename "C:\nginx\html\ts\lig-%random%%random%-%%3d.svgz" -y "C:\nginx\html\hls\lig1.m3u8" > log.txt 

(. Не уверен, что если он будет работать, хотя)


Когда вам нужно перекодировать входной поток, вы должны рассмотреть вопрос о добавьте в команду некоторые параметры кодирования. По умолчанию ffmpeg пытается сопоставить исходные параметры и качество, что не всегда является самым оптимальным в реальных приложениях.

«Очень быстрая, сверхбыстрая и сверхбыстрая» пресетов h264 - это хорошее начало для повышения производительности.

-c:v h264 -preset:v ultrafast

Вы также можете играть с ХПН (Constant Rate Factor) кодирования, более высокие битрейтов и т.д. Подробнее о H264 Кодировку: https://trac.ffmpeg.org/wiki/Encode/H.264

+0

, когда я печатаю -preset: v ultrafast в командной строке ffmpeg stucks freezes –

+0

Если вы перекодируете, вы также должны определить кодек 'e: -c: v h264' !!! Кроме того, вырезаем '' журнал'', он запрещает ffmpeg сообщать, что не так. –

0

-rE (вход) Читать вход на собственной частотой кадров , В основном используется для имитации устройства захвата или живого входного потока (например, при чтении из файла). Не следует использовать с фактическими устройствами захвата или живыми входными потоками (где это может привести к потере пакетов). По умолчанию ffmpeg пытается прочитать входные данные как можно быстрее. Эта опция замедляет чтение входов (ов) до собственной частоты кадров ввода (ов). Это полезно для вывода в реальном времени (например, потокового видео).

0

Хотя этот вопрос уже рассмотрен, я считаю, что ему не хватает ответа, который не включает настройку параметров команды и все же может использоваться с другими инструментами или командами, а не только с ffmpeg.

Инструмент cpulimit разработан специально для этой цели и будет эффективно работать не только для ffmpeg, но и для любого другого процесса интенсивного процессора, который вы хотите уменьшить для использования этого ресурса.

Самый важный аргумент cpulimit - -l, который позволяет указать процент CPU, который будет разрешен для использования (в качестве верхнего предела). Также обратите внимание, что это ограничение зависит от количества процессоров/ядер/потоков, которые есть у машины, например, если машина имеет 8 процессоров, cpulimit -l действительные значения будут варьироваться от 0 до 800 (0 бесполезно, конечно, и 800, что не ограничивает процесс вообще, так как 800% означает всю производительность машинной обработки).

Пример использования половины емкости для 8 процессоров машины: cpulimit -l 400 ffmpeg ...

Надеется, что это помогает на этот конкретный вопрос, а также аналогичные потребности в будущем.

Смежные вопросы