exec_block

`exec_block` 指令允许在特定的 RTMP 事件发生时执行外部命令。

语法exec_block { command; }
默认值none
上下文
参数none

说明

exec_block 指令是 NGINX RTMP 模块的一部分,该模块定义了在 RTMP 流处理过程中发生某些事件(例如发布或关闭流)时如何执行外部命令。此功能对于在实时应用的流媒体工作流中集成额外的处理或通知非常重要。

当流发布或关闭时,该指令会触发已定义命令或脚本的执行,并传递相关参数,例如流名称和客户端标识。这允许开发者自动化诸如录制管理、流通知处理,甚至使用外部工具(例如 FFmpeg)执行转码任务等操作。命令在处理请求的 NGINX worker 进程的上下文中执行,从而便于对流活动进行实时反馈。

由于通过 exec_block 执行的命令可能对性能和安全产生影响,因此应谨慎处理。对于需要基于用户交互或流事件定制行为的高级流媒体部署,该指令特别有用。然而,不当的配置或执行可能导致性能瓶颈或安全漏洞,因此验证输入并适当处理错误至关重要。

配置示例

rtmp {
    server {
        listen 1935;

        application live {
            live on;
            exec_block {
                exec /usr/local/bin/notify_stream.sh "$name";
            }
        }
    }
}

确保外部命令可以由 NGINX 工作进程在没有安全限制的情况下执行。

单独测试该命令,以确保在从 NGINX 上下文调用时其行为符合预期。

谨慎使用可能执行时间较长的命令,因为它们可能会阻塞 NGINX 的工作进程。如有可能,请使用异步处理或多线程。

← 返回所有指令