exec_play
Директива exec_play в модуле NGINX RTMP позволяет запускать внешние программы при воспроизведении потока.
Описание
Директива exec_play предназначена для использования в модуле NGINX RTMP и выполняет указанные внешние команды каждый раз, когда воспроизводится медиапоток. Эта возможность особенно полезна для интеграции дополнительных функций, таких как логирование, проведение аналитики, запуск аналитических скриптов или запуск других автоматизированных задач в ответ на события STREAM_PLAY. Директива принимает один или несколько аргументов, которые обычно включают команду(ы) для выполнения и любые необходимые параметры для этих команд.
Когда директива задана, exec_play вызывает указанную команду каждый раз при воспроизведении потока пользователем. Она работает неблокирующим образом, позволяя NGINX обслуживать другие запросы одновременно с выполнением внешней программы. Важно убедиться, что внешние команды идемпотентны или могут корректно обрабатывать множественные вызовы, так как они могут срабатывать несколько раз в течение одной сессии воспроизведения. Кроме того, следует внимательно управлять выводом и кодами возврата этих команд, чтобы предотвратить неожиданные поведения.
Один из распространённых сценариев использования exec_play — отправка уведомлений или обновление централизованных систем мониторинга при доступе к потоку. Это мощная директива, которая может значительно расширить возможности стримингового сервера за счёт внешней автоматизации.
Пример конфига
application live {
live on;
exec_play /usr/local/bin/my_script.sh $name;
}Убедитесь, что внешние скрипты исполняемы и имеют правильно установленные права доступа.
Будьте осторожны с потреблением ресурсов внешней программы, так как это может повлиять на производительность сервера.
Корректно обрабатывайте вывод команд и ошибки, чтобы избежать непредвиденного поведения при воспроизведении потока.