博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Windows下搭建基于nginx的视频直播和点播系统
阅读量:6181 次
发布时间:2019-06-21

本文共 3496 字,大约阅读时间需要 11 分钟。

 

一、软件准备

 

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

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

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

下载地址:/,详细说明可参见:

我下载的是这个版本。

这个网站同时也提供了vcredist的下载(,),以避免运行nginx时出现缺少库的错误。

另外还要下载 用于显示当前ngix-rtmp服务状态

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

总结如下:

1. 

2. 

3. 

4. 

二、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"

 

原文链接:http://bernieyu.com/2015/06/build-video-live-and-vod-with-nginx-rtmp-on-windows/

转载地址:http://hxbda.baihongyu.com/

你可能感兴趣的文章
netty 分析博客
查看>>
Spring Cloud构建微服务架构服务注册与发现
查看>>
BCGControlBar教程:如何将MFC控件的BCGControlBarBCGSuite添加到对话框中
查看>>
深入理解Java8 Lambda表达式
查看>>
Java集合框架面试问题集锦
查看>>
Java每天10道面试题,跟我走,offer有!(六)
查看>>
四种途径提高RabbitMQ传输数据的可靠性(二)
查看>>
c语言实现多态
查看>>
Linux 在 TOP 命令中切换内存的显示单位
查看>>
浏览器的加载与页面性能优化
查看>>
Java基础学习总结(5)——多态
查看>>
shell: demo
查看>>
使用vc+如何添加特殊字符的控件(创世纪篇)
查看>>
Linux下的常用信号
查看>>
3.UIImageView+category
查看>>
2.UIView+category
查看>>
Android ImageLoader使用
查看>>
LDTP
查看>>
StringUtils工具类的常用方法
查看>>
linux下VNC安装与配置
查看>>