科技 > 软件教程 > 媒体工具

FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流

78人参与 2024-08-04 媒体工具

《ffmpeg开发实战:从零基础到短视频上线》一书的“10.2.2  ffmpeg向网络推流”介绍了轻量级流媒体服务器mediamtx,虽然mediamtx使用很简单,可是不能满足复杂的业务需求,故而实际应用中需要引入专业的流媒体服务器。
nginx-rtmp是开源web服务器nginx可增强的第三方rtmp模块,该模块封装了rtmp服务器,可以提供简单的rtmp流媒体服务器功能。由于nginx本身是个高性能的web服务器,支持代理分发多种协议的数据,因此通过nginx集成rtmp服务器也是个可行的方案。nginx默认没开启rtmp模块,需要在编译nginx时添加rtmp模块,还要修改配置文件才能开启rtmp服务。
因为nginx+rtmp在windows环境的编译过程非常麻烦,不但要考虑各种依赖包的版本兼容问题,还要注意msys与visual studio命令行的切换问题,所以这里只讲述如何在linux环境给ngixn集成rtmp模块,详细的集成步骤说明如下。

一、准备nginx和nginx-rtmp-module的源码

nginx的官网地址是https://nginx.org/,下载页面为https://nginx.org/en/download.html,最新版本为2024年4月发布的nginx-1.26.0,该版本的源码包下载链接为https://nginx.org/download/nginx-1.26.0.tar.gz。
nginx-rtmp-module的源码托管地址是https://github.com/arut/nginx-rtmp-module,各版本的下载页面为https://github.com/arut/nginx-rtmp-module/tags,最新版本为2024年4月发布的nginx-rtmp-module-1.2.2,该版本的源码包下载链接为https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.2.tar.gz。
以上源码包下载完毕后,把它们上传到linux服务器的/usr/local/src目录下,后续将在该目录解压这些源码包。

二、编译与安装nginx(包含集成rtmp模块)

登录linux服务器,依次执行下列的解压命令,分别解压nginx-rtmp-module、nginx等等的源码包。

cd /usr/local/src
tar zxvf nginx-rtmp-module-1.2.2.tar.gz
tar zxvf nginx-1.26.0.tar.gz

接着进入nginx源码目录,执行以下命令配置nginx。

cd nginx-1.26.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../nginx-rtmp-module-1.2.2

配置完毕,执行以下命令编译nginx。

make -j4

编译完毕,执行以下命令安装nginx。

make install

三、启动nginx的rtmp服务

打开nginx安装路径下的conf/nginx.conf,在文件末尾添加下面的rtmp配置,指定rtmp协议监听的端口号和服务名。

rtmp {
    server {
        # rtmp协议的端口号
        listen 1935;
        # rtmp协议的服务名
        application live {
            live on;
        }
    }
}

添加完毕,保存nginx.conf并退出。然后运行下面命令启动nginx。

cd /usr/local/nginx/sbin
./nginx

四、检查nginx-rtmp是否正常运行

下面通过ffmpeg把视频文件向rtmp服务推流,也就是通过下面命令向rtmp://127.0.0.1/live/test推流视频文件。有关ffmpeg的详细用法参见《ffmpeg开发实战:从零基础到短视频上线》一书,这里不再赘述。

ffmpeg -re -stream_loop -1 -i "/usr/local/src/test/2018s.mp4" -vcodec h264 -f flv rtmp://127.0.0.1/live/test

然后启动电脑上的流媒体播放器vlc media player,打开网络串流“rtmp://xxx.xxx.xxx/live/test”,可见vlc media player正常播放来自rtmp链接的直播视频,说明nginx-rtmp服务正确实现了rtmp协议的流媒体传输功能。

更多详细的ffmpeg开发知识参见《ffmpeg开发实战:从零基础到短视频上线》。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

装anaconda默认下载路径在d盘,现在想用ipython的时候用不了了咋办?

08-04

FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg

08-04

FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流

08-04

FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址

08-04

FFmpeg开发笔记(四十二)使用ZLMediaKit开启SRT视频直播服务

08-04

FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作

08-04

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论