基础配置
刚开始连不上网,因为是刚搭建的centos环境,修改了一下网络配置
vi /etc/sysconfig/network-scripts/ifcfg-ens192
###
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens192
UUID=1f0e3eea-8320-4ad3-90dc-259d4fbb3574
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.2.233
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
### 添加DNS
DNS1=8.8.8.8
DNS2=192.168.2.2
### 添加DNS
ZONE=public
更换yum源
yum -y install wget
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装必备环境
yum -y install gcc gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
Nginx安装
安装nginx-rtmp-model
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
unzip -o master.zip
mv nginx-rtmp-module-master/ nginx-rtmp-module
安装Nginx服务器
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --prefix=/usr/local/nginx --add-module=/root/nginx/nginx-rtmp-module
make && make install
配置Nginx环境
vim /etc/profile
### 末尾添加以下内容
export PATH=$PATH:/usr/local/nginx/sbin
###
source /etc/profile # 环境生效
检测是否安装成功
nginx -V
### 输出以下内容则成功
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --add-module=/root/nginx/nginx-rtmp-module
安装ffmpeg
yum install -y epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum update -y
yum install -y ffmpeg
#检查版本
ffmpeg -version
修改nginx配置
cp usr/local/nginx/html/index.html /root/nginx/html/ # 复制index网页文件到自己的文件夹路径
vi /usr/local/nginx/conf/nginx.conf
# 修改权限为root
user root;
worker_processes 1;
...
# 在http节点后面加上rtmp配置:
rtmp {
server {
listen 1935;
application rtmplive {
live on;
record off;
}
}
}
# 修改http-server的配置信息
http{
...
server {
listen 8081; #此处为监听端口
server_name 192.168.2.233; # 此处为服务器IP地址
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /root/nginx/html; # 这里需要修改为自己定义的网页文件位置
index index.html index.htm;
}
...
}
可启动服务器,并关闭防火墙
/usr/local/nginx/sbin/nginx
sudo systemctl stop firewalld
登录定义好的地址(此处为192.168.2.233:8081)查看,Nginx服务器是否成功启动,正常则如下图所示
Nginx服务器成功启动
接下来通过ffmpeg对rtsp网络摄像头数据进行重新rtmp推流
命令格式
ffmpeg -i "rtsp://XXXX:XXX" -vcodec copy -acodec copy -f flv "rtmp://:XXXX:XXX"
此处需要将rtsp强制通过tcp传输(-rtsp_transport tcp),否则会出现断流以及传输失败的现象
ffmpeg -rtsp_transport tcp -i "rtsp://test:testhik501@218.90.159.147:7554/h264/ch1/sub/av_stream" -vcodec copy -acodec copy -f flv "rtmp://192.168.2.233:1935/live/"
通过vlc工具可以查看是否推流成功,也可以直接在index.html上获取rtmp数据进行网页显示