Nginx搭建RTMP流媒体服务器的实现

更新时间:2022-07-19 14:44:24

本文主要介绍了Nginx搭建RTMP流媒体服务器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧!

1 环境搭建

环境搭建主要是利用nginx服务器的插件模块nginx-rtmp-module进行rtmp的推拉流操作。

依赖库安装

安装过nginx的可以跳个这个步骤,主要是安装ssl、pcre和zlib库依赖

#安装ssl依赖库
sudo apt-get install openssl libssl-dev 
#安装pcre
sudo apt-get install libpcre3 libpcre3-dev
#安装zlib
sudo apt-get install zlib1g-dev

源码下载与编译

源码下载路径:https://github.com/arut/nginx-rtmp-module下载源码,如果git命令没法下载就直接到网页下载复制到对应目录。

mkdir /home/rtmp
cd /home/rtmp
git clone https://github.com/nginx/nginx.git
git clone https://github.com/arut/nginx-rtmp-module.git

编译过程

设置nginx编译参数

auto/configure --with-http_ssl_module --with-http_v2_module --with-http_flv_module --with-http_mp4_module --add-module=../nginx-rtmp-module

编译和安装

make -j4
sudo make install

安装完可以查看nginx版本是否正常默认安装路径:/usr/local/nginx/

6a35bf7da1b217b1424227400f216f23_20220718144401159.jpg

2 推流服务

2.1 利用文件推流

完成nginx服务器的安装后,需要进行rtmp服务的配置,只需要修改nginx配置即可:

vi /usr/local/nginx/conf/nginx.conf

配置内容注意事项:

开启root权限,以便可以访问home下的目录;play路径设置为自己的视频文件夹路径

user  root;
rtmp {  #RTMP server
server {
listen 1935;  #server port
chunk_size 4096;  #chunk_size
application vod {
   #play /mnt/hgfs/ygf/vod; #media file position
   play /home/ffmpeg_learn/test_sources/test-av;
}
}
}

3f88155b88c89487fa0801f5389d2618_20220718144401160.jpg

重启nginx

/usr/local/nginx/sbin/nginx -s reload

需要注意的是播放的路径一定要正确,同时播放音频是aac视频视h264,这里添加一个test.mp4文件。

a50d1006eda4d609525b83daf7f03e6e_20220718144401161.jpg

下面是测试过程,windows利用vlc工具播放rtmp的路径。这里的ip需要设置为自己的Ubuntu ip地址

abeff039e5a39db34df4b1a96be44cc1_20220718144401162.jpg

视频效果如下:

0b6641692e50b9293ac4b8094fb072de_20220718144401163.jpg

注意需要确定视频文件的格式:音频为AAC视频为H264

2.2 将一路流灌到nginx服务器rtmp进行推流

1 修改nginx配置,新增直播节点,用于FFmpeg将流推到对应节点上

application live{ # live add
   live on;
}

f880a103f477731bcbdbc568e4514140_20220718144402164.jpg

2 重启nginx服务器

/usr/local/nginx/sbin/nginx -s reload

3 进行推流操作

ffmpeg -re -i /home/ffmpeg_learn/test_sources/test-av/Titanic.mp4 -c copy -f flv rtmp://192.168.88.180/live/Titanic

利用vlc查看视频,如下所示:

fa156f52dd7ea162b164e2f8cdde360d_20220718144402165.jpg

3 直播拉流

上面利用VLC就是一个拉流的过程。这里介绍FFmpeg命令行操作。

#利用ffplay直接观看
ffplay rtmp://192.168.88.180/vod/Titanic.mp4
#利用FFmpeg下载到文件
ffmpeg -i rtmp://192.168.88.180/vod/Titanic.mp4 test.mp4

Nginx