在Centos 7.x中使用ffmpeg搭建RTSP流处理环境
Posted 风华正茂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Centos 7.x中使用ffmpeg搭建RTSP流处理环境相关的知识,希望对你有一定的参考价值。
Centos7.x 搭建RTSP流处理环境
服务器环境
- 服务器 centos 7 目前版本
CentOS Linux release 7.6.1810
下载地址
安装nginx & nginx-rtmp-module
下载依赖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
安装zlib
解压zlib
tar -zxvf zlib-1.2.11.tar.gz
进入解压后的文件夹
cd zlib-1.2.11
编译前配置
./configure
编译
make
安装
make install
安装openssl
解压openssl
tar -zxvf openssl-1.0.2s.tar.gz
进入解压后的文件夹
cd openssl-1.0.2s
编译前配置
./configure
编译
make
安装
make install
安装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
/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
保存并退出
编辑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
rtsp 转 rtmp 流
# 命令解释 ffmpeg -i "rtsp://admin:admin@192.168.1.208: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:admin@192.168.1.208: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:admin@192.168.1.208: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
,或者更大值
以上是关于在Centos 7.x中使用ffmpeg搭建RTSP流处理环境的主要内容,如果未能解决你的问题,请参考以下文章
CentOS 7.x上gitlab搭建教程(https可用,邮件可用)
CentOS 7.x环境下搭建: Headless chrome + Selenium + ChromeDriver 实现自动化测试
CentOS 7.x环境下搭建: Headless chrome + Selenium + ChromeDriver 实现自动化测试