【笔记】Centos7+Nginx+Rtmp+Ffmpeg搭建流媒体服务器

安装前需要的工具

#net-tool 查本地IP
#wget 下载安装包
#unzip 解压zip包
#gcc gcc-c++ perl 编译软件包用
yum install -y net-tools wget unzip gcc gcc-c++ perl
复制代码

将Centos的yum源更换为国内的阿里云源

#备份yum源
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 makecache
复制代码

安装nginx及rtmp

切换到 /home 下

cd /home
复制代码

切换到 /home 下,下载并解压pcre

#下载pcre包
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
#解压pcre包
tar -zxvf pcre-8.41.tar.gz
复制代码

切换到 /home 下,下载并解压zlib

#下载zlib包
wget http://www.zlib.net/zlib-1.2.11.tar.gz
#解压zlib包
tar -zxvf zlib-1.2.11.tar.gz
复制代码

切换到 /home 下,下载并安装openssl

#下载openssl包
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1i.tar.gz
#解压openssl包
tar -zxvf openssl-1.0.1i.tar.gz
#切换到openssl里
cd openssl-1.0.1i
#生成配置文件 默认配置
./config --prefix=/usr/local --openssldir=/usr/local/openssl
#编译程序
make 
#安装程序
make install
复制代码

切换到 /home 下,下载并解压nginx-rtmp-model

#下载rtmp包
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
#解压下载包
unzip -o master.zip
#修改文件夹名
mv master nginx-rtmp-module
复制代码

切换到 /home 下,安装nginx

#下载nginx
wget http://nginx.org/download/nginx-1.12.2.tar.gz
#解压nignx 
tar -zxvf nginx-1.12.2.tar.gz
#切换到nginx中
cd nginx-1.12.2
#生成配置文件,将上述下载的文件配置到configure中
./configure --prefix=/usr/local/nginx --with-pcre=/home/pcre-8.41 --with-zlib=/home/zlib-1.2.11 --with-openssl=/home/openssl-1.0.1i --add-module=/home/nginx-rtmp-module  
#编译程序
make
#安装程序
make install
复制代码

切换到 /home 下,安装ffmpeg

#安装epel包
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
#安装ffmpeg
yum install -y ffmpeg
#检查安装成功
ffmpeg -version
复制代码

修改配置运行服务

修改nginx配置

vi /usr/local/nginx/conf/nginx.conf
复制代码

修改之后的nginx配置

#user  nobody;

#工作进程
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#指定pid存放的路径
pid /usr/local/nginx/logs/nginx.pid;

events {
        #使用的网络I/O模型,linux系统推荐是epoll而freeBSD是kqueue
        use  epoll;
        #允许的连接数,最大的高并发连接数为worker_processes*worker_connections
        worker_connections  1024;
}

#RTMP配置
rtmp {
    server {
        #监听端口
        listen 1935;
        #直播流
        application myapp {
            live on;
            record off;
        }
        #hls配置
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
        }
    }
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    gzip  on;

    server {
        listen       80;
        server_name  服务器IP;

        #数据格式设置
        charset utf-8;

        location /stat {
                rtmp_stat all;
                rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
                #设置为你的nginx-rtmp-module文件夹路径,注意访问权限
                root /home/nginx-rtmp-module/;
        }

        location /rtmp-publisher {
                #设置为你的nginx-rtmp-module文件夹路径,注意访问权限
                root /home/nginx-rtmp-module/test;
        }

        location / {
            #设置为你的nginx-rtmp-module文件夹路径,注意访问权限,可使用默认设置
            root /home/nginx-rtmp-module/test/www;
            index  index.html index.htm;
        }

        #配置hls
        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
        }
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

复制代码

启动或重启nginx

/usr/local/nginx/sbin/nginx

或

/usr/local/nginx/sbin/nginx -s reload
复制代码

打开防火墙

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
复制代码

在阿里云增加安全组规则,配置1935端口号

测试功能

1. 查看IP

ifconfig
复制代码

2. 上传测试视频

在服务器的home文件夹下上传一个test.mp4视频

3. 推送rtmp流

同时,下载一个VLC软件,输入"rtmp://服务器IP:1935/myapp/推送后的视频名字"点击播放进行测试

ffmpeg -re -i "/home/test.mp4" -vcodec libx264 -vprofile baseline -acodec aac  -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://服务器IP:1935/myapp/推送后的视频名字 
复制代码

推送hls流

写个HTML测试

ffmpeg -re -i "/home/test.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://服务器IP:1935/hls/推送后的视频名字
复制代码

同时,打开你的HTML

<script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script>
<video id="video"></video>
<script>
  if(Hls.isSupported()) {
    var video = document.getElementById('video');
    var hls = new Hls();
    hls.loadSource('http://服务器IP/hls/推送后的视频名字.m3u8');
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED,function() {
      video.play();
  });
 }
</script>
复制代码

参考

  • https://blog.csdn.net/kingroc/article/details/50839994
  • https://blog.csdn.net/loyachen/article/details/50909854
  • https://blog.csdn.net/szydwy/article/details/78632222

转载于:https://juejin.im/post/5b2a287f51882574d02fa86e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值