基于Nginx模块搭建直播服务

转载请标明出处: https://blog.csdn.net/u014214308/article/details/82698542

直播技术原理:

客户端(A:主播,推流)通过摄像头采集到视频数据,经过转码等操作,再基于RTMP协议发送到服务端(B:媒体服务器),服务端接收到数据以后保持到本地,另一端(C:观众,拉流)基于RTMP协议,请求服务端(B)上的数据到手机(Pad或者PC),经过解码等操作,显示出来

在这里插入图片描述

涉及到的概念:

RTMP: RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题

Nginx: 服务器

nginx-rtmp-module: 基于Nginx的流媒体Server

HLS:苹果出的一套Http Live Streaming协议,它的工作原理简单来说就是把一段视频流,分成一个个小的基于HTTP的文件来下载。当媒体流正在播放时,客户端可以根据当前网络环境,方便地在不同的码率流中做切换,以实现更好的观影体验。

实现步骤:

  • 安装Nginx及直播模块
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz
git clone https://github.com/arut/nginx-rtmp-module.git 
cd nginx-1.14.0
./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
make
make install
  • 修改Nginx配置文件
vim /usr/local/nginx/conf/nginx.conf  

加入以下内容rtmp模块:(rtmp{}的内容和http{}为同级,位置不要放错)


rtmp {    
    
    server {
        listen 1935;  #监听的端口
        chunk_size 4000;
           
        application live {  #rtmp推流请求路径,名字自己定义
            live on;    #开启直播功能
            hls on;    
            hls_path /usr/local/nginx/html/live;    
            hls_fragment 5s;    
        }    
    }    
} 


启动Nginx

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

或者重启

/usr/local/nginx/sbin/nginx -s reload    

测试:

  • 使用OBS推流

下载地址:https://obsproject.com/

这里写图片描述

这里写图片描述

  • 使用VLC拉流

下载地址:http://www.videolan.org/vlc/

这里写图片描述

这里写图片描述

这里在填写拉流的URL时,需要填写推理的服务器地址+流名称,如果一切正常的话,应该就能看到直播视频了,这里面可能会有3~5秒左右的延迟,这取决于RTMP模块的配置参数hls_fragment,目前设置的是每5秒钟切割一次视频文件,如果想降低延迟率的话,可以把这个值调低一点,当然这可能会带来服务器I/O性能问题,这里只当一个演示用,具体实践场景还要综合考虑。

参考资料:

Nginx-RTMP-Module的官方Github

使用nginx与nginx-rtmp-module搭建流媒体服务器

利用nginx搭建RTMP视频点播、直播、HLS服务器

轻松入门Android直播相关技术 从0搭建直播系统

直播推流实现RTMP协议的一些注意事项

Nginx-rtmp直播之业务流程分析

理解RTMP、HttpFlv和HLS的正确姿势

HLS协议介绍

Nginx RTMP 模块 nginx-rtmp-module 指令详解

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值