基于Nginx搭建RTMP/HLS视频直播服务器

https://www.cnblogs.com/cocoajin/p/4353767.html

一:RTMP

RTMP流媒体协议是 一套 Adobe 开发的音频视频实时传输协议;

二:Nginx-rtmp

 nginx-rtmp 是一个基于nginx的 RTMP服务模块,开源,免费

https://github.com/arut/nginx-rtmp-module

三:在 ubuntu server 14 安装流程

1.先下载安装  nginx 和 nginx-rtmp 编译依赖工具

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
2. 创建一个工作目录,并切换到工作目录

mkdir ~/working
cd ~/working
3. 下载 nginx 和 nginx-rtmp源码

wget http://nginx.org/download/nginx-1.7.5.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
4. 安装unzip工具,解压下载的安装包

sudo apt-get install unzip
5.解压 nginx 和 nginx-rtmp安装包

tar -zxvf nginx-1.7.5.tar.gz
unzip master.zip
6. 切换到 nginx-目录

cd nginx-1.7.5
7.添加 nginx-rtmp 模板编译到 nginx

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
8.编译安装 

make
sudo make install
9. 安装nginx init 脚本

sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo update-rc.d nginx defaults
10. 启动和停止nginx 服务,生成配置文件

sudo service nginx start
sudo service nginx stop
11. 安装 FFmpeg

sudo apt-add-repository ppa:jon-severinsson/ffmpeg
sudo apt-get update
sudo apt-get install ffmpeg
12. 配置 nginx-rtmp 服务器

打开 /usr/local/nginx/conf/nginx.conf

在末尾添加如下 配置

复制代码
rtmp {
    server {
            listen 1935;
            chunk_size 4096;

            application live {
                    live on;
                    record off;
                    exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;
            }
            application live360p {
                    live on;
                    record off;
        }
    }
}
复制代码
13. 保存上面配置文件,然后重新启动nginx服务

sudo service nginx restart
14. 如果你使用了防火墙,请允许端口 tcp 1935

16: 使用 客户端,使用 rtmp协议进行视频实时采集

Field 1: rtmp://your.vultr.ip/live/
Field 2: stream-key-your-set
 在这里视频采集我使用的是 iPhone5 的 采集程序 https://github.com/jgh-/VideoCore

 

            [_session startRtmpSessionWithURL:@"rtmp://192.168.86.246/live/" andStreamKey:@"test"];
17. 在上面客户端采集的过程之中,可以使用 vlc 播放器打开  rtmp 实时流

rtmp://your.vultr.ip/live/stream-key-you-set
打开上面的流,进行测试实时的效果

18: 关于 nginx-rtmp 更多配置

https://github.com/arut/nginx-rtmp-module/wiki/Directives

https://www.jianshu.com/p/0296a7be7928

https://blog.csdn.net/zizi7/article/details/54347223

//解压nginx源码包
tar -xzvf nginx-1.10.0.tar.gz
//进入nginx源码目录
cd nginx-1.10.0
//安装rtmp扩展模块
./configure  刚才复制的nginx configure参数  --add-module=rtmp扩展包目录
如:
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --add-module=/usr/local/nginx/extend_module/nginx-rtmp-module
//编译
make
//安装
make install
//重启nginx
service nginx start
service php-fpm start
//查看安装状态
nginx -V

#尾部加入
rtmp {  
    server {  
        listen 1935;  #监听的端口
        chunk_size 4000;  
        
        application hls {  #rtmp推流请求路径
            live on;
            record off;
        }  
    }  
}

//ffmepg推流(本地准备一个视频文件)
ffmpeg -re -i 本地视频文件的绝对路径(如/Users/flycorn/Downloads/demo-hls.mp4) -vcodec copy -f flv rtmp://服务器IP:1935/hls/test
// 如:
ffmpeg -re -i /Users/flycorn/Downloads/demo-hls.mp4  -vcodec copy -f flv rtmp://服务器IP:1935/hls/test

//修改rtmp配置
rtmp {
    server {
        listen 1935; #监听的端口
        chunk_size 4000;
        application hls { #rtmp推流请求路径
            live on;
            hls on; 
            hls_path /home/hls/test; #视频流文件目录(自己创建)
            hls_fragment 3s; 
        }
    }
}

//修改server的配置
server
{
        listen 80 default_server;
        #listen [::]:80 default_server ipv6only=on;
        server_name www.lnmp.org;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;

        #error_page   404   /404.html;
        include enable-php.conf;
         
        #加入hls支持
        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8; 
                #或 application/x-mpegURL
                video/mp2t ts;
            }
            alias /home/hls/test/;  #视频流文件目录(自己创建)
            expires -1;
            add_header Cache-Control no-cache;
        }
        #end...
        
        #以下代码省略.....
}

    A+
发布日期:2018年08月04日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: