当建立或断开与 RTMP 模块的连接时,在 nginx 中触发事件

Posted

技术标签:

【中文标题】当建立或断开与 RTMP 模块的连接时,在 nginx 中触发事件【英文标题】:Trigger an event in nginx when a connection to RTMP module is made or dropped 【发布时间】:2016-07-20 13:33:52 【问题描述】:

我使用 nginx RTMP 模块来广播视频流。数据从通过 3G 连接挂接的远程设备推送到 nginx/RTMP 服务器,我们按传输的 MB 付费,因此只有在有侦听器/播放器时才将视频流式传输到服务器符合我的兴趣。

(不幸的是,对于那些不熟悉 RTMP 的人来说,即使没有听众观看直播,服务器也总是在“吞食”数据。

我找到了一种开始流式传输到 nginx/RTMP 服务器的方法,因此我可以跨 3G 保存数据(将 Web 链接简单重定向到 rtmp 链接,没问题),但我找不到任何可靠的方法来检测何时RTMP 客户端(播放器)关闭连接,以阻止设备流式传输到 nginx。

所以我的问题是:有没有办法指示 nginx(或其 RTMP 模块)在与特定 RTMP URL 建立连接时触发事件、信号、创建/删除文件?我可以通过 incron 观察文件的创建/删除来生活,这样就可以了。

或者我是否需要进入 API 级别甚至更深入的源代码?

【问题讨论】:

【参考方案1】:

希望您已经得到了答案。无论哪种方式,我都建议在 https://github.com/arut/nginx-rtmp-module/wiki/Directives 的指令中查看诸如 exec_publish、exec_record_done、on_play 和 on_publish 事件的标头

on_publish 可能有助于检查状态并允许或拒绝流

【讨论】:

以上是关于当建立或断开与 RTMP 模块的连接时,在 nginx 中触发事件的主要内容,如果未能解决你的问题,请参考以下文章

如何断开 rtmp 连接?

当蓝牙断开连接或重新连接时,我的webview会重新加载

从 cron 运行时远程端口转发断开连接

如何在 android 上检查 socket.io 连接或断开连接?

TCP的连接与断开

TCP的连接与断开