Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule

简介Nginx1.9.11开始增加加载动态模块支持,可以在不停机的情况下加载和卸载模块。从此不再需要替换nginx文件即可增加第三方扩展。目前官方只有几个模块支

简介

Nginx 1.9.11开始添加加载动态模块的支持,可以在不停机的情况下加载和卸载模块。从现在开始,您不再需要替换nginx文件来添加第三方扩展。目前只有少数官方模块支持动态加载,第三方模块需要升级支持才可以编译成模块。

通过帮助命令./configure –help | 检查是否支持动态加载模块grep 动态

/build/openresty-1.19.3.1$ ./configure –help | /build/openresty-1.19.3.1$ grepdynamic –with-http_xslt_module=动态启用动态ngx_http_xslt_module –with-http_image_filter_module=动态启用动态ngx_http_image_filter_module –with-http_geoip_module=动态启用动态ngx_http_geoip_module –with-http_perl_module=动态启用动态ngx_http_perl_module –with-mail=动态启用动态POP3/IMAP4/SMTP 代理模块–with-stream=dynamic 启用动态TCP/UDP 代理模块–with-stream_geoip_module=dynamic 启用动态ngx_stream_geoip_module –add-dynamic-module=PATH 启用动态外部模块–with-compat 动态模块从上面的兼容性可以看出,官方支持编译9 个动态模块,即添加第三方模块。只需使用参数–add-dynamic-module=。

动态模块概述

可以加载到NGINX中的模块是用C编写的。获取匹配的NGINX开源版本。获取模块源并根据需要更改模块的配置文件。使用configure命令的–add-dynamic-module参数针对NGINX开源版本构建动态模块。将生成的动态模块(.so 文件)加载到NGINX(modules 目录下)中,并像内置模块一样使用它。

动态模块语法

命令:load_moduleDefault: —上下文配置部分: 主要说明:版本必须=1.9.11 示例:load_module module/ngx_mail_module.so;

编译动态模块

此处安装基于Nginx的流媒体服务器:nginx-rtmp-module模块

项目地址:https://github.com/arut/nginx-rtmp-module

下载OpenResty

OpenResty 是一个基于Nginx 和Lua 的高性能Web 平台。它集成了大量复杂的Lua库、第三方模块和大部分依赖项。用于轻松构建能够处理超高并发和高扩展性的动态Web应用程序、Web服务和动态网关。

//下载wget https://openresty.org/download/openresty-1.19.3.1.tar.gz //解压tar -zxvf openresty-1.19.3.1.tar.gz 下载nginx-rtmp-module

git clone https://github.com/arut/nginx-rtmp-module.git 下载模块路径地址为:/home/www/build/nginx-rtmp-module

编译

进入OpenResty目录

cd openresty-1.19.3.1 编译

./configure –prefix=/usr/local/openresty/nginx –with-cc-opt=’-O2 -O3′ \–with-ld-opt=-Wl,-rpath,/usr/local/openresty/luajit/lib –with-pcre-jit \–with-stream –with-stream_ssl_module –with-stream=dynamic –with-file-aio \–with-threads –with-http_v2_module –with-http_realip_module \–with-http_mp4_module –with-http_gzip_static_module –with-http_ssl_module \–with-http_stub_status_module –with-http_xslt_module \–with-openssl-opt=’-g enable-tlsext’ –with-stream \–with-stream_ssl_preread_module \–with-compat –add-dynamic-module=/home/www/build/nginx-rtmp-module//编译make并添加–with-compat选项,生成可以加载模块的Nginx可执行文件

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule

注意:不要在这里执行make install 命令,否则安装的Nginx 二进制文件将被覆盖。这里对于动态加载,我们只需要编译模块即可生成第三方模块.so文件。

要将模块加载到Nginx 中,请将load_module 指令添加到nginx.conf 主配置文件的主上下文中。

load_module module/ngx_rtmp_module.so;nginx.conf主配置文件参考

user tinywan;worker_processes auto;//其他配置.load_module module/ngx_rtmp_module.so;//其他配置.

使用模块

新建流媒体服务器配置

rtmp { 服务器{ 监听1935;块大小4000; drop_idle_publisher 10s;空闲流关闭;应用程序直播{继续直播; } 应用程序hls { 继续;开启; hls_路径/tmp/hls; } # MPEG-DASH 类似于HLS 应用程序dash { live on;冲上去; dash_path /tmp/dash;注意:此配置需要与HTTP 上下文并行,而不是放在HTTP 模块中。

检查Nginx配置文件是否OK

sudo /usr/local/openresty/nginx/sbin/nginx -tnginx: 配置文件/usr/local/openresty/nginx/conf/nginx.conf 语法是oknginx: 配置文件/usr/local/openresty/nginx/conf/nginx.conf 测试成功。没问题,重启openresty服务即可。

sudo systemctl restart openresty.service

安全组设置

打开安全组设置,在【入方向】开放1935端口。 1935端口是rtmp的默认监听端口。这里必须设置为开放,否则在服务器中开放并监听1935端口后公网环境无法连接该端口。

OBS 推流

推送地址:rtmp://{服务器公网IP}/live/tinywan2024

VLC 拉流播放

推流地址:rtmp://{服务器公网IP}/live/tinywan2024

出现“is not binary compatible in”错误的解决方案

sudo /usr/local/openresty/nginx/sbin/nginx -tnginx: [emerg] 模块’/usr/local/openresty/nginx/modules/ngx_rtmp_module.so’ 与/usr/local/openresty/nginx/conf/nginx.conf:7nginx: 配置文件中的二进制不兼容/usr/local/openresty/nginx/conf/nginx.conf 测试失败原因

第三方模块编译时包含的签名与使用的nignx不一致。

用户评论

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
陌潇潇

哇,NginxRTMPModule这个模块真的太强大了,我之前一直想尝试动态编译加载第三方流媒体服务,这下终于可以轻松实现了!

    有5位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
孤败

看了介绍,感觉这个模块对直播行业来说是个大福音啊,不过我是个小白,不知道怎么操作,有高手能指导一下吗?

    有11位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
米兰

我一直用Nginx做服务器,但是RTMP流媒体的处理总是有点头疼,这个模块出来后,我仿佛看到了希望的曙光。

    有5位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
发型不乱一切好办

动态编译加载第三方模块确实方便,但是安全性方面要怎么保证呢?毕竟涉及到直播内容,不能出任何差错。

    有5位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
我怕疼别碰我伤口

这个NginxRTMPModule模块看起来不错,但是我用了一段时间后,发现直播画质还是不稳定,有什么解决办法吗?

    有19位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
淡淡の清香

学习了,原来Nginx可以这样玩,之前以为只能做静态页面服务呢,现在要试试看能不能应用到自己的项目中。

    有9位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
我一个人

动态编译这个功能太实用了,我之前试过手动添加模块,但是每次都要重新编译Nginx,太麻烦了。

    有11位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
坏小子不坏

听说这个模块对带宽有一定的优化,我比较关心这个,希望实际使用中能够感受到。

    有6位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
搞搞嗎妹妹

RTMP直播现在越来越流行了,这个模块一出,感觉整个直播行业都要迎来新的春天。

    有13位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
雪花ミ飞舞

我之前用的是Apache,现在看到NginxRTMPModule这么强大,有点心动,准备尝试迁移过去了。

    有11位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
容纳我ii

这个模块的功能很全面,但是配置起来有点复杂,有没有详细的教程啊?

    有16位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
封心锁爱

动态编译加载模块确实方便,不过我担心更新和升级会带来麻烦,有没有什么好的建议?

    有19位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
海盟山誓总是赊

NginxRTMPModule模块的出现,让我对Nginx有了新的认识,期待它能解决我直播中的各种问题。

    有20位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
致命伤

动态编译加载第三方模块,听起来挺高级的,我这种入门级选手能学会吗?

    有9位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
巷雨优美回忆

这个模块对服务器性能有没有影响?我担心加载了太多模块会拖慢服务器。

    有13位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
瑾澜

用了NginxRTMPModule模块后,直播效果确实好了很多,感谢开发者们的辛勤付出。

    有12位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
绳情

动态编译加载第三方模块是个好主意,但是我希望它能提供更多的模块选择,满足不同用户的需求。

    有17位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
秒淘你心窝

这个模块让我对Nginx有了新的认识,原来它还能做这么多事情,太惊喜了!

    有18位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
哭着哭着就萌了°

NginxRTMPModule模块的出现,让我对直播行业的未来充满了信心,期待更多创新和突破。

    有11位网友表示赞同!

Nginx动态编译加载第三方流媒体服务模块:NginxRTMPModule
拥菢过后只剰凄凉

学习了,这个模块对我来说是个很好的学习材料,我会好好研究一下,争取应用到自己的项目中。

    有17位网友表示赞同!

综合资源

流媒体服务器和视频服务器有什么区别?

2025-11-14 18:38:25

综合资源

法航预计自2023年7月1日起每天运营飞往中国目的地的航班!

2025-11-14 18:41:19

购物车
优惠劵
搜索