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

打印 上一主题 下一主题

主题 879|帖子 879|积分 2637

《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等等的源码包。
  1. cd /usr/local/src
  2. tar zxvf nginx-rtmp-module-1.2.2.tar.gz
  3. tar zxvf nginx-1.26.0.tar.gz
复制代码
接着进入nginx源码目录,实行以下下令配置nginx。
  1. cd nginx-1.26.0
  2. ./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../nginx-rtmp-module-1.2.2
复制代码
配置完毕,实行以下下令编译nginx。
  1. make -j4
复制代码
编译完毕,实行以下下令安装nginx。
  1. make install
复制代码
三、启动Nginx的RTMP服务

打开nginx安装路径下的conf/nginx.conf,在文件末端添加下面的rtmp配置,指定rtmp协议监听的端口号和服务名。
  1. rtmp {
  2.     server {
  3.         # rtmp协议的端口号
  4.         listen 1935;
  5.         # rtmp协议的服务名
  6.         application live {
  7.             live on;
  8.         }
  9.     }
  10. }
复制代码
添加完毕,保存nginx.conf并退出。然后运行下面下令启动nginx。
  1. cd /usr/local/nginx/sbin
  2. ./nginx
复制代码
四、检查nginx-rtmp是否正常运行

下面通过ffmpeg把视频文件向rtmp服务推流,也就是通过下面下令向rtmp://127.0.0.1/live/test推流视频文件。有关ffmpeg的详细用法参见《FFmpeg开发实战:从零底子到短视频上线》一书,这里不再赘述。
  1. 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开发实战:从零底子到短视频上线》一书。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表