nginx + rtmp 流媒体服务器

目前主流的开源流媒体服务

  • 流媒体解决方案 Live555 (C++)
  • 流媒体平台框架 EasyDarwin (C++,国产精品)
  • 实时流媒体播放服务器程序DarwinStreamingSrvr (C++)
  • Flash流媒体服务器 Red5 (Java)
  • 流媒体服务器 Open Streaming Server (Java)
  • FMS流媒体服务器 (Adobe,收费的)
  • Wowza流媒体服务器(Java)
  • 开源流媒体平台FreeCast(Java)
  • 最后就是我们下面说的 Ngix+RTMP插件

一、视频流的获取,可在电脑安装ffmpeg,采集摄像头的视频流然后推送到流媒体服务器上。

ffmpeg命令格式:

    ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
    ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
    1、参数选项:
    (1) -an: 去掉音频
    (2) -acodec: 音频选项, 一般后面加copy表示拷贝
    (3) -vcodec:视频选项,一般后面加copy表示拷贝
    2、格式:
    (1) h264: 表示输出的是h264的视频裸流
    (2) mp4: 表示输出的是mp4的视频

    (3)mpegts: 表示ts视频流

1.列出可用设备:ffmpeg -list_devices true -f dshow -idummy   (window)

                           ffmpeg -f avfoundation -list_devices true -I '' ''   (Mac)

2.推流:ffmpeg -f dshow -i video="USB2.0 PC CAMERA" -vcodec libx264 -acodec copy  -b 780k -r 60  -preset:v ultrafast -tune:v zerolatency -f flv rtmp://193.112.101.157:1935/hls/test           ------(window)

推流优化:-b 780k -r 60   -b 推流流量  -r 码率

 

-f flv rtmp://IP:1935/hls/test   IP推流地址 test 是文件名,可以随便取

 

二、搭建rtmp + nginx 流媒体服务器(Centos7)

1.下载Nginx解压,并添加rtmp和openssl支持

 


[root~]# wget http://nginx.org/download/nginx-1.12.1.tar.gz 
[root~]# tar -zxvf nginx-1.12.1.tar.gz 

2.下载nginx-rtmp-module 并安装

 


[root~]# yum -y install openssl openssl-devel//安装一下openssl,不然下面可能会报错
[root~]# git clone https://github.com/arut/nginx-rtmp-module.git
[root~]# ./configure --add-module=/替换为自己的安装路径(path/to)/nginx-rtmp-module --with-http_ssl_module
[root~]# make && make install
[root~]# /usr/local/nginx/sbin/nginx //启动nginx

浏览器打开localhost:8080,出现下图成功安装

nginx + rtmp 流媒体服务器_第1张图片

重启nginx后报错,pid丢失:

 

去到 sbin目录下 输入下面的指令

nginx -c /usr/local/nginx/nginx.conf

3.配置nginx.conf

在server里添加下面代码

 

 

在配置文件最后添加下面这段

#HLS配置开始,这个配置为了`客户端`能够以http协议获取HLS的拉流
        location /hls {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /home/video;
            add_header Access-Control-Allow-Origin *;//跨域配置
            add_header Cache-Control no-cache;
        }
       #HLS配置结束


        #error_page  404              /404.html;


        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

 

    server {  
        listen 1935;  
        ping 30s;  
        notify_method get;  
  
        application myapp {  
            live on;  
            record off;  
            max_connections 1024;  
        }  
  
    #增加对HLS支持开始  
    application hls {  
        live on;  
        hls on;  
        hls_path /home/video/hls;  
        hls_fragment 2s; 
        hls_playlist_length 3s;
    }  
    #增加对HLS支持结束  
    }  
}

 

4.nginx操作:

 

nginx 服务器重启命令,关闭

 

nginx -s reload :修改配置后重新加载生效

 

nginx -s reopen :重新打开日志文件

 

nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确

关闭nginx:

 

nginx -s stop :快速停止nginx

 

quit :完整有序的停止nginx

其他的停止nginx 方式:

ps -ef | grep nginx

kill -QUIT 主进程号 :从容停止Nginx

 

kill -TERM 主进程号 :快速停止Nginx

 

pkill -9 nginx :强制停止Nginx

三、video.js播放m3u8视频文件




    videojs播放
    



    

    
    
    
    

 

 

 

你可能感兴趣的:(流媒体,HLS,nginx,跨域)