分布式直播系统(一)【协议基础篇】

转载请注明出处:https://blog.csdn.net/impingo
项目地址:https://github.com/im-pingo/pingos

最简单的直播系统

在讲直播服务器之前我们先大概描述一下最简单的直播场景(单点流媒体服务器),如下图所示主播使用rtmp工具推流,观众使用相应的拉流协议拉流。
​​单点流媒体服务器

协议介绍

rtmp协议

流式协议,所谓流式是指rtmp协议在传输过程中是将一整帧完整数据分割成大小基本相等的小块(chunk)传输,支持推流和拉流操作,目前adobe已经停止对该协议进行升级,所以rtmp是不支持一些比较新的音视频编码的(例如 h265 vp8 vp9 等等,但是国内的CDN厂商一般会对rtmp协议做私有扩展,使其能够支持h265编码)。

http-flv协议

这是一种更简单直播方式,实现原理是对于http下载请求,如果http头中没有content-length字段,则http客户端就会一直接受服务器传来的数据,直到服务器将tcp连接断开。试想一下,如果http服务器在播放器请求的时候先返回flv文件头,然后接着返回最新的直播内容,播放器就可以一直直播下去,直到服务器断开连接。

hls协议

一种基于http下载操作的媒体协议,简单概括一下就是,服务器端会动态生成一个m3u8文本文件和多个mpegts(一种媒体封装格式)切片文件,m3u8文本中包含这些切片的路径,试想一下,如果服务器不停产生新切片并且删除老切片,通知更新m3u8文件,这样m3u8文件中描述的mpegts文件就是当前最新的直播内容。客户端的行为是只需要不停请求m3u8文件并且发现如果m3u8文件内容发生变化就下载新的mpegts文件进行播放。

其他协议

其他直播协议还有DASH、http-ts、http-fmp4,甚至当今比较火的实时性更高的webrtc协议。
这些协议和系统的教程将在完成rtmp、http-flv、hls协议系统的架构后开展。

总结

协议场景延时
rtmpflash、ffplay、vlc等终端播放器2s+((如果取消缓存也可以做到1s左右延时))
http-flvflash、ffplay、vlc等终端播放器,当然也有h5播放方案(利用mes方案,如flv.js,以后会介绍具体实现方式)2s+(如果取消缓存也可以做到1s左右延时)
hls几乎支持所有终端播放器(包括html5)5s+
http-ts与http-flv非常类似,只不过是利用http协议分发ts媒体流同http-flv

下一篇将介绍如何搭建一个支持http-ts、http-flv、rtmp、hls、dash协议的流媒体服务器。

QQ交流群:697773082

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值