Centos7.x 搭建RTSP流处理环境
服务器环境
- 服务器 centos 7 目前版本
CentOS Linux release 7.6.1810
下载地址
安装nginx & nginx-rtmp-module
- 官网下载nginx 目前版本
nginx-1.17.0
下载地址 - 下载依赖pcre 目前版本
pcre-8.38
下载地址 使用pcre2 nginx会编译失败 - 下载依赖zlib 目前版本
zlib-1.2.11
下载地址 - 下载openssl 目前版本
openssl-1.0.2s
下载地址 - 下载nginx-rtmp-module
git clone https://github.com/arut/nginx-rtmp-module.git
- 安装gcc g++
yum install gcc yum install gcc-c++
- 安装pcre
- 解压pcre
tar -zxvf pcre-8.38.tar.gz
- 进入解压后的文件夹
cd pcre-8.38
- 编译前配置
./configure
- 编译
make
- 安装
make install
- 解压pcre
- 安装zlib
- 解压zlib
tar -zxvf zlib-1.2.11.tar.gz
- 进入解压后的文件夹
cd zlib-1.2.11
- 编译前配置
./configure
- 编译
make
- 安装
make install
- 解压zlib
- 安装openssl
- 解压openssl
tar -zxvf openssl-1.0.2s.tar.gz
- 进入解压后的文件夹
cd openssl-1.0.2s
- 编译前配置
./configure
- 编译
make
- 安装
make install
- 解压openssl
- 安装nginx
- 解压nginx
tar -zxvf nginx-1.17.0.tar.gz
- 进入解压后的文件夹
cd nginx-1.17.0
- 编译前配置
# 配置解释 ./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.38 # pcre路径 如有不同需要修改 --with-zlib=/root/zlib-1.2.11 # zlib路径 如有不同需修改 --with-openssl=/root/openssl-1.0.2s # openssl路径 如有不同需修改 --add-module=/root/nginx-rtmp-module # nginx-rtmp-module路径 如有不同需要修改 # 运行时去掉换行 ./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.38 --with-zlib=/root/zlib-1.2.11 --with-openssl=/root/openssl-1.0.2s --add-module=/root/nginx-rtmp-module
- 编译
make
- 安装
make install
- 解压nginx
/etc/init.d
目录下创建 nginx 文件touch /etc/init.d/nginx
- 编辑nginx文件
- vim 打开
vim /etc/init.d/nginx
- 复制以下内容
#!/bin/bash #Startup script for the nginx Web Server #chkconfig: 2345 85 15 nginx=/usr/local/nginx/sbin/nginx conf=/usr/local/nginx/conf/nginx.conf case $1 in start) echo -n "Starting Nginx" $nginx -c $conf echo " done." ;; stop) echo -n "Stopping Nginx" killall -9 nginx echo " done." ;; test) $nginx -t -c $conf echo "Success." ;; reload) echo -n "Reloading Nginx" ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP echo " done." ;; restart) $nginx -s reload echo "reload done." ;; *) echo "Usage: $0 {start|restart|reload|stop|test|show}" ;; esac
- 保存并退出
- vim 打开
- 编辑nginx配置文件
- 打开配置文件
vim /usr/local/nginx/conf/nginx.conf
- 添加以下配置
rtmp { #rtmp 协议 server { listen 9999; #端口号 application live{ live on; record off; } application hls{ #输出路径 live on; hls on; hls_path nginx-rtmp-module/hls; hls_cleanup off; } } }
- 保存并退出
- 打开配置文件
- 启动nginx
service nginx start
- 安装ffmpeg
- yum升级
sudo yum install epel-release -y sudo yum update -y
- 安装第三方源
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
- 安装ffmpeg
sudo yum install ffmpeg ffmpeg-devel -y
- yum升级
- rtsp 转 rtmp 流
# 命令解释 ffmpeg -i "rtsp://admin:[email protected]:46599/cam/realmonitor?channel=1&subtype=0" #摄像头地址 -f flv -r 15 -an "rtmp://192.168.1.240:9999/hls/demo" #输出地址 要和ningx一致 demo可以自定义 # 运行时需要去除换行 # 命令行启动 ffmpeg -i "rtsp://admin:[email protected]:46599/cam/realmonitor?channel=1&subtype=0" -f flv -r 15 -an "rtmp://192.168.1.240:9999/hls/demo" >> ./log/ffmpeg.out # 后台启动 建议写成shell脚本 nohup ffmpeg -i "rtsp://admin:[email protected]:46599/cam/realmonitor?channel=1&subtype=0" -f flv -r 15 -an "rtmp://192.168.1.240:9999/hls/demo" >> ./log/ffmpeg.out 2>&1 &
- 问题
- 无法访问端口 可能是防火墙开启中 可以关闭防火墙
# 关闭防火墙命令: systemctl stop firewalld # 开启防火墙 systemctl start firewalld # 关闭开机自启动 systemctl disable firewalld.service # 开启开机启动 systemctl enable firewalld.service
- ffmpeg解码时掉线不会重连 目前尚未解决
- 花屏,需要下载ffmpeg源码然后修改并重新编译
在ffmpeg源码udp.c中:将#define UDP_MAX_PKT_SIZE 65536
修改为#define UDP_MAX_PKT_SIZE 655360
,或者更大值
- 无法访问端口 可能是防火墙开启中 可以关闭防火墙
原文地址:https://www.cnblogs.com/97jay/p/12286845.html
时间: 2024-10-14 08:48:56