exec_record_done
Директива exec_record_done задаёт команды, которые будут выполнены при завершении сеанса записи в модуле NGINX RTMP.
Описание
Директива exec_record_done позволяет определить команду(ы), которые NGINX выполнит после завершения записи потока. Эта возможность особенно полезна для таких действий, как обработка или архивирование записанного файла после окончания сеанса записи. Аргументы, переданные этой директиве, интерпретируются как строки команд, которые NGINX будет запускать через системную оболочку. Она может принимать одну или несколько строк команд, что обеспечивает гибкость в выполнении. Например, пользователи могут вызвать FFmpeg для транскодирования или запустить собственный скрипт для постобработки.
При использовании этой директивы важно убедиться, что указанные команды правильно отформатированы и доступны в среде выполнения NGINX. Если команды не выполняются, это может привести к «молчащим» ошибкам, усложняющим диагностику. Контекст выполнения — процесс сервера, поэтому критически важно обеспечить правильные права доступа и пути выполнения для выполняемых операций. Кроме того, поскольку команды запускаются при завершении сеанса записи, они могут выполняться асинхронно, что следует учитывать при выполнении зависимых операций, запускаемых впоследствии.
Ошибки при выполнении команд не повлияют на целостность записи, но могут помешать выполнению дополнительных ожидаемых задач. Поэтому рекомендуется включать надёжную обработку ошибок в вызываемых командах.
Пример конфига
application live {
live on;
record all;
exec_record_done /usr/local/bin/post_process.sh;
}Команды должны быть указаны с полными путями, чтобы предотвратить сбои выполнения из-за проблем с путями в окружении.
Убедитесь, что пользователь NGINX имеет необходимые права для выполнения указанных команд или скриптов.
Будьте осторожны с выводом и возвращаемыми значениями выполняемых скриптов, так как ошибки не прерывают процесс записи.