CentOS搭建Nginx流媒体服务器

基础配置

刚开始连不上网,因为是刚搭建的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:[email protected]:7554/h264/ch1/sub/av_stream" -vcodec copy -acodec copy -f flv "rtmp://192.168.2.233:1935/live/"

通过vlc工具可以查看是否推流成功,也可以直接在index.html上获取rtmp数据进行网页显示

你可能感兴趣的:(CentOS搭建Nginx流媒体服务器)