在Windows下搭建基于nginx的视频直播和点播系统

一、软件准备
由于nginx原生是为linux服务的,因此官方并没有编译好的windows版本可以下载,
要在windows上使用nginx,要么下载源码进行编译,要么使用其他人已经编译好的文件。


而要让nginx支持视频直播和点播,还需要第三方的nginx模块:nginx-rtmp-module


所幸,已经有大神做好了nginx的编译,而且集成了很多nginx模块,其中就已经包括了nginx-rtmp-module。


下载地址:http://nginx-win.ecsds.eu/,
详细说明可参见:Readme nginx-win version.txt(http://nginx-win.ecsds.eu/download/Readme%20nginx-win%20version.txt)


我下载的是nginx 1.7.11.3 Gryphon(http://nginx-win.ecsds.eu/download/nginx%201.7.11.3%20Gryphon.zip)这个版本。


这个网站同时也提供了vcredist的下载(x86,x64),以避免运行nginx时出现缺少库的错误。
http://nginx-win.ecsds.eu/download/vcredist_x86.exe
http://nginx-win.ecsds.eu/download/vcredist_x64.exe


另外还要下载 stat.xsl(https://github.com/arut/nginx-rtmp-module/blob/master/stat.xsl) 
用于显示当前ngix-rtmp服务状态


另外还需要下载ffmpeg、ffplay、yamdi:


总结如下:


1. nginx 1.7.11.3 Gryphon(http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip)


2. stat.xsl(https://github.com/arut/nginx-rtmp-module/blob/master/stat.xsl)


3. ffmpeg、ffplay(http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20150619-git-bb3703a-win32-static.7z)


4. yamdi(http://sourceforge.net/projects/yamdi/files/latest/download?source=files)


二、Nginx 配置


1. nginx配置


worker_processes  1;


error_log  logs/error.log debug;


events {
    worker_connections  1024;
}


rtmp {
    server {
        listen 1935;


        application hls {
             live on;  #启用rtmp直播
                       #地址为rtmp://[server]:[rtmp_port]/[app]/[stream]
             hls on;   #启用hls直播
                       #地址为http://[server]:[http_port]/[app]/[stream].m3u8
                       #需要配合下面http段设置使用
             hls_path nginx-rtmp-module/tmp/app/;
             hls_fragment 5s;
             recorder rec {  #启用录制
               record all manual;  #手动控制录制启停
               record_suffix _rec.flv;
               record_path nginx-rtmp-module/tmp/rec/;  #录制保存地址
               record_unique on;
           }
       }
       application vod2{  #rtmp点播
        play nginx-rtmp-module/tmp/rec/;    
       }
    }
}


http {
    server {
        listen      18080;


        location /stat {  #服务器状态
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }


        location /stat.xsl {
            root nginx-rtmp-module/;
        }


        location /control { #控制器
            rtmp_control all;
        }
        
location /hls/ {  #hls直播地址
           #server hls fragments
           types{
             application/vnd.apple.mpegurl m3u8;
             video/mp2t ts;
           }
           alias nginx-rtmp-module/tmp/app/;
           expires -1;
        }


        location /vod/{  #hls点播地址
            alias nginx-rtmp-module/tmp/rec/;
        }


        location / {
            root nginx-rtmp-module/test/www/;
        }
    }
}


三、测试
1. 启动nginx
start nginx_1.7.11.3_Gryphon\nginx


2. 推送rtmp流到nginx-rtmp
start ffmpeg\ffmpeg -re -i rtmp://live.hkstv.hk.lxdns.com/live/hks -vcodec libx264 -preset:v ultrafast 
-tune:v zerolatency -acodec copy -f flv rtmp://localhost:1935/hls/mystream -loglevel quiet


3. rtmp直播
ffmpeg\ffplay "rtmp://127.0.0.1:1935/hls/mystream"


4. hls 直播
ffmpeg\ffplay "http://127.0.0.1:18080/hls/mystream.m3u8"


5. 开始录制
http://127.0.0.1:18080/control/record/start?app=hls&name=mystream&rec=rec


6. 停止录制
http://127.0.0.1:18080/control/record/stop?app=hls&name=mystream&rec=rec


7. 为rtmp点播文件添加索引,否则文件在播放时进度条不能拖动,假定刚才录制的文件名为mystream-1428384476_rec.flv
yamdi\yamdi -i nginx_1.7.11.3_Gryphon\nginx-rtmp-module\tmp\rec\mystream-1428384476_rec.flv -o nginx_1.7.11.3_Gryphon\nginx-rtmp-module\tmp\rec\mystream-1428384476_rec_idx.flv


8. rtmp点播
ffmpeg\ffplay "rtmp://127.0.0.1:1935/vod2/mystream-1428384476_rec_idx.flv"


9. 制作hls点播分片文件
ffmpeg\ffmpeg -i E:\video-nginx\nginx_1.7.11.3_Gryphon\nginx-rtmp-module\tmp\rec\mystream-1428384476_rec.flv -acodec copy -bsf:a h264_mp4toannexb -g 105 -vcodec libx264 -vprofile baseline -bf 0 -bufsize 850k -bsf:v dump_extra -map 0 -f segment -segment_format mpegts -segment_list "E:\video-nginx\nginx_1.7.11.3_Gryphon\nginx-rtmp-module\tmp\rec\mystream-1428384476_rec\mystream-1428384476_rec.m3u8" -segment_time 10 E:\video-nginx\nginx_1.7.11.3_Gryphon\nginx-rtmp-module\tmp\rec\mystream-1428384476_rec\mystream-1428384476_rec-%d.ts


10. hls 点播
ffplay "http://127.0.0.1:8080/vod/mystream-1428384476_rec/mystream-1428384476_rec.m3u8"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
AOKU AMS流媒体直播服务系统是北京北极星通信息技术有限公司研发的一套基于IP网络的音视频应用平台,采用模块化,跨平台的架构设计,采用自主研发的高性能 流媒体服务引擎,支持多种主流流媒体协议(RTP、 RTMP等);支持直播点播、录播等多种应用模式;支持PC机、手机、机顶盒等多种接入终端。方便用户建立多种应用模式。    AOKU AMS系统内置高性能流媒体服务器,Web服务器,可直接提供基于Web的Flash直播点播应用。是可以迅速构建Flash平台的利器。   奥酷流媒体直播服务软件AMS系能特点: 1、支持TCP、UDP协议,支持单播、组播等多种应用模式,支持TS、RTMP、RTSP、HTTP、UDP等多种协议; 2、支持高清,标清直播,支持在线点播视频直播视频广播等业务,支持虚拟文件直播功能,可编排文件直播列表; 3、可通过任何IP网络提供流媒体业务,能够跨越代理服务器、防火墙; 4、能够对rtmp流进行二次转发,同时转发给多个rtmp流媒体服务器; 5、响应点播时间控制在100ms以内,支持暂停、拖动等特技操作,无需下载播放器直播延时可控制在1s左右; 6、AMS服务器支持部署到Windows、Linux、Unix等多种操作系统上,单台AMS最多支持多达500个单播用户的接入,并支持组播发布模式,可以使接收用户多达无限,通过AMS服务器的集群部署,也能够支持成千上万的单播用户接入; 7、支持H.264 MP3或者H.264 AAC直播,支持Windows,Android,IOS平台免下载插件观看; 8、支持flash、VLC、WMP、暴风影音等多种播放器接入,使得应用更加广泛; 9、除了正常接收奥酷的硬件编码器发布的直播流外,还能够接收来自FME上的直播流; 10、支持直播同时进行录像、可设置录像任务,可录制mp4或者FLV格式的文件,无需转码,可直接供客户端进行点播; 11、开放的系统架构,提供二次开发接口,可轻松的融入到用户已有的平台或网站平台中、或在此基础上进行二次开发等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunxiaopengsun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值