使用何种平台安装rtmp,都需要c语言编译源代码,需要解压ngnix、rtmp,且操作过程中需要提权以创建文件
此处没有选择apt install nginx,翻遍全网未发现使用包安装nginx的rtmp
nginx下载地址:nginx: download
rtmp项目地址:https://github.com/arut/nginx-rtmp-module/
1.下载nginx和nginx-rtmp源码
wget http://nginx.org/download/nginx-1.27.2.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
2.解压nginx和nginx-rtmp安装包
安装unzip并解压
sudo apt-get install unzip
tar -zxvf nginx-1.20.1.tar.gz
unzip master.zip
3.安装编译依赖工具
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev
如果模块未安装,会出现如下错误,解决方法如下:
nginx编译安装出现的常见错误_you can either do not enable the modules, or insta-优快云博客
4.添加模块、编译安装
cd到nginx目录下并添加模块
add-module=/home/rtmp/nginx/nginx-rtmp-module-master,这里需要指定绝对路径
./configure --with-http_ssl_module --add-module=/home/rtmp/nginx/nginx-rtmp-module-master
make操作需要提权,不提权无法创建目录
sudo su
make && make install
通过以下命令检查是否安装成功
/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.27.2
built by gcc 13.2.0 (Ubuntu 13.2.0-23ubuntu4)
built with OpenSSL 3.0.13 30 Jan 2024
TLS SNI support enabled
configure arguments: --with-http_ssl_module --add-module=/home/rtmp/nginx/nginx-rtmp-module-master
5.配置ngnix
在 /etc/systemd/system/ 下创建 nginx.service 文件,将以下内容粘贴到文件中
sudo vi /etc/systemd/system/nginx.service
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
提权
sudo chmod 777 nginx.service
配置重新加载
sudo systemctl daemon-reload nginx.service
开启Nginx随机自启服务
sudo systemctl enable nginx.service
启动Nginx
sudo systemctl start nginx.service
查看服务状态
systemctl status nginx
编辑nginx配置文件
sudo vi /usr/local/nginx/conf/nginx.conf
rtmp {
server {
listen 1935;
chunk_size 4096;
application live{
live on;#开启直播
hls on;# 支持m3u8
hls_path /home/video; # m3u8 文件的保存位置,检验配置是否成功,可以推流后cd到该目录下,看一下有没有文件生成,有文件的话就可以判定不是推流配置的问题。
hls_fragment 10s;# 每个视频保存10s
hls_playlist_length 60s; #单个视频长度
hls_continuous on; #是否连续
}
}
}
配置完config文件,重启nginx服务
sudo systemctl restart nginx.service
6.测试
浏览器打开ip
查看所有端口和服务:
ss -tuln
也可以通过telnet1935 80端口测试
检测Nginx运行状态
sudo systemctl status nginx
7.OBS推流设置
推流地址为:rtmp://ip:1935/live/推流码or流密钥
拉流地址为:rtmp://ip:1935/live/推流码
播放地址:http://ip/live/推流码.m3u8 (如果设置了端口号需更改)
ffmpeg -f v4l2 -input_format mjpeg -video_size 640x480 -i /dev/video4 -vcodec libx264 -r 30 -preset ultrafast -tune zerolatency -b:v 900k -f flv rtmp://192.168.180.1:1935/live/home
ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/test