exec_play

Директива exec_play в модуле NGINX RTMP позволяет запускать внешние программы при воспроизведении потока.

Синтаксисexec_play command ...;
По умолчаниюnone
Контекст
Аргументы1+

Описание

Директива exec_play предназначена для использования в модуле NGINX RTMP и выполняет указанные внешние команды каждый раз, когда воспроизводится медиапоток. Эта возможность особенно полезна для интеграции дополнительных функций, таких как логирование, проведение аналитики, запуск аналитических скриптов или запуск других автоматизированных задач в ответ на события STREAM_PLAY. Директива принимает один или несколько аргументов, которые обычно включают команду(ы) для выполнения и любые необходимые параметры для этих команд.

Когда директива задана, exec_play вызывает указанную команду каждый раз при воспроизведении потока пользователем. Она работает неблокирующим образом, позволяя NGINX обслуживать другие запросы одновременно с выполнением внешней программы. Важно убедиться, что внешние команды идемпотентны или могут корректно обрабатывать множественные вызовы, так как они могут срабатывать несколько раз в течение одной сессии воспроизведения. Кроме того, следует внимательно управлять выводом и кодами возврата этих команд, чтобы предотвратить неожиданные поведения.

Один из распространённых сценариев использования exec_play — отправка уведомлений или обновление централизованных систем мониторинга при доступе к потоку. Это мощная директива, которая может значительно расширить возможности стримингового сервера за счёт внешней автоматизации.

Пример конфига

application live {
    live on;
    exec_play /usr/local/bin/my_script.sh $name;
}

Убедитесь, что внешние скрипты исполняемы и имеют правильно установленные права доступа.

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

Корректно обрабатывайте вывод команд и ошибки, чтобы избежать непредвиденного поведения при воспроизведении потока.

← Ко всем директивам