直播协议的学习总结

  • 直播应用中,RTMP和HLS基本上可以覆盖所有客户端观看,HLS主要是延时比较大,RTMP主要优势在于延时低。

一.RTMP的特点
RTMP (Real Time Messaging Protocol,实时消息传送协议) 
RTMP是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议
这个协议建立在TCP协议或者轮询HTTP协议之上。
RTMP本质上是流协议
  • 优势
    1.Adobe支持得很好
    RTMP实际上是现在编码器输出的工业标准协议,基本上所有的编码器(摄像头之类)都支持RTMP输出。原因在于PC市场巨大,PC主要是Windows,Windows的浏览器基本上都支持flash,Flash又支持RTMP支持得非常好。
    2.稳定性高,适合长时间播放
    因为RTMP支持的很完善,所以能做到flash播放RTMP流长时间不断流, 当时测试是100万秒,即10天多可以连续播放。
    若做CDN或者大中型集群分发,选择稳定性高的协议一定是必要的。
    3.延迟较低
    比起YY的那种UDP私有协议,RTMP算延迟大的(延迟在1-3秒),比起HTTP流的延时(一般在10秒以上)RTMP算低延时。一般的直播应用,只要不是电话类对话的那种要求,RTMP延迟是可以接受的。在一般的视频会议应用中,RTMP延时也能接受,原因是别人在说话的时候我们一般在听,实际上1秒延时没有关系,我们也要思考(话说有些人的CPU处理速度还没有这么快)。
    4.有累积延迟
    技术一定要知道弱点,RTMP有个弱点就是累积误差,原因是RTMP基于TCP不会丢包。所以当网络状态差时,服务器会将包缓存起来,导致累积的延迟;待网络状况好了,就一起发给客户端。这个的对策就是,当客户端的缓冲区很大,就断开重连。
    5.编码器接入
    编码器输出到互联网(还可以输出为UDP主播之类的应用),主要是RTMP
    譬如专业编码器,或者flash网页编码器,或者FMLE,或者ffmpeg,或者安防摄像头,都支持RTMP输出。
    若需要接入多种设备,譬如提供云服务;或者希望网页直接采集摄像头;或者能在不同编码器之间切换,那么RTMP作为服务器的输入协议会是最好的选择。
    6.系统容错
    容错有很多种级别,RTMP的集群实现时可以指定N上层,在错误时切换不会影响到下层或者客户端,另外RTMP的流没有标识,切到其他的服务器的流也可以继续播放。 HLS 的流热备切换没有这么容易。
    若对于直播的容错要求高,譬如降低出问题的概率,选择RTMP会是很好的选择。
    7.可监控
    在监控系统或者运维系统的角度看,流协议应该比较合适监控。
    HTTP的流监控感觉没有那么完善。这个不算绝对优势,但比较有利。
    8.支持加密
    RTMPE和RTMPS为加密协议。虽然HLS也有加密,但在PC平台上flash对RTMPE/RTMPS支持应该比较不错

  • 劣势
    1.协议复杂
    RTMP协议比起HTTP复杂很多,导致性能低下。
    测试发现两台服务器直连100Gbps网络中,HTTP能跑到60Gbps,但是RTMP只能跑到10Gbps,CPU占用率RTMP要高很多。
    复杂协议导致在研发,扩展,维护软件系统时都没有HTTP那么方便,所以HTTP服务器现在大行其道,apache/nginx/tomcat,N多HTTP服务器;而RTMP协议虽然早就公开,但是真正在大规模中分发表现良好的没有,adobe自己的FMS在CDN中都经常出问题。
    2.Cache麻烦
    流协议做缓存不方便。譬如点播,若做RTMP流协议,边缘缓存RTMP会很麻烦。
    如果是HTTP,缓存其实也很麻烦,但是HTTP服务器的缓存已经做了很久,所以只需要使用就好。这是为何点播都走HTTP的原因。

    • 经过测量发现,在网络状况良好时:
  • RTMP延时可以做到0.8秒左右。
  • 多级边缘节点不会影响延迟(和SRS同源的某CDN的边缘服务器可以做到)
  • Nginx-Rtmp延迟有点大,估计是缓存的处理,多进程通信导致?
  • GOP是个硬指标,不过SRS可以关闭GOP的cache来避免这个影响.
  • 服务器性能太低,也会导致延迟变大,服务器来不及发送数据。
  • 客户端的缓冲区长度也影响延迟。
    譬如flash客户端的NetStream.bufferTime设置为10秒,那么延迟至少10秒以上。

二.HTTP的特点
Real Time Messaging Protocol(简称 RTMP)
是 Macromedia 开发的一套视频直播协议,现在属于 Adobe。
和 HLS 一样都可以应用于视频直播,但是实时性比 HLS 要好。
一般使用这种协议来上传视频流,也就是视频流推送到服务器。
HTTP说的是HTTP流,譬如各大视频网站的点播流,
HTTP本质上还是文件分发。
  • 优势
    1.性能很高
    HTTP的性能没得说,协议简单,各种HTTP高性能服务器也完善。
    如果分发的量特别大,譬如点播视频网站,没有直播的实时性要求,HTTP协议是最好选择。
    2.没有碎片
    HTTP比HLS没有碎片,HTTP分发大文件会比小文件分发方便很多。
    特别是存储,小文件的性能超低,是个硬伤。
    3.穿墙
    互联网不可能不开放HTTP协议,否则就不叫互联网。所以任何端口封掉,也不会导致HTTP流看不了。(不过RTMP也能穿墙,用RTMPT协议)。
  • 劣势
    1.实时性差
    基本上没有实时性这个说法。
    2.原生支持不好
    就PC上flash对于HTTP流支持还可以,Android/IOS上似乎只能mp4,总之移动端对于HTTP的支持不是很完善。

三.HLS的特点
HLS (HTTP Live Streaming) 是Apple的动态码率自适应技术。
主要用于PC和Apple终端的音视频服务。
包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。
 #EXTM3U                 m3u文件头
 #EXT-X-MEDIA-SEQUENCE   第一个TS分片的序列号
 #EXT-X-TARGETDURATION   每个分片TS的最大的时长
 #EXT-X-ALLOW-CACHE      是否允许cache
 #EXT-X-ENDLIST          m3u8文件结束符
 #EXTINF                 指定每个媒体段(ts)的持续时间(秒),仅对其后面的URI有效
 mystream-12.ts
  • 优势
    1.性能高
    和HTTP一样
    2. 穿墙
    和HTTP一样。
    3.原生支持很好
    IOS上支持完美。Android上支持差些。PC/flash上现在也有各种as插件支持HLS。
  • 劣势
    1.实时性差
    基本上HLS的延迟在10秒以上。
    2.文件碎片
    若分发HLS,码流低,切片较小时,小文件分发不是很友好。
    特别是一些对存储比较敏感的情况,譬如源站的存储,嵌入式的SD卡。

image.png
  • Httpflv 是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。实质上也是HTTP模式,它形成的文件极小、加载速度极快。

四.协议分发方式的比较
互联网上的两种主要的分发方式:HLS和RTMP,
什么时候用谁,完全决定于应用场景。
还有其他的分发方式,这些分发方式不属于互联网常见和通用的方式,不予以比较:

1. UDP
譬如YY的实时应用,视频会议等等,或者RTSP之类。这类应用的特点就是实时性要求特别高,以毫秒计算。
TCP家族协议根本就满足不了要求,所以HTTP/TCP都不靠谱。这类应用没有通用的方案,必须自己实现分发(服务端)和播放(客户端)。
2. P2P
譬如RTMFP或者各家自己的协议。这类应用的特点是节省带宽。
目前PC/flash上的RTMFP比较成熟,Android上的P2P属于起步群雄纷争标准不一,IOS上P2P应该没有听说过。
3. RTSP
这种不是互联网上的主要应用,在其他领域譬如安防等有广泛应用。

另外,HTTP的也分为几种:

1. HTTP progressive
早期流媒体服务器分发http文件时,以普通的http文件分发,这种叫做渐进式下载,意思就是如果文件很大譬如1小时时长1GB大小,想从中间开始播放是不行的。但这种方式已经是作古了,很多http服务器支持http文件的seek,就是从中间开始播放。
2. HTTP stream
支持seek的HTTP流,譬如各家视频网站的点播分发方式。或者稍微复杂点的,譬如把一个大文件切几段之后分发。目前在pc/flash上点播国内的主流分发是这种方式。
3. HLS
这种是现在适配方式最广(除了flash, 需要额外的as库支持),在PC上有vlc,Android/IOS原生播放器就支持播放HLS,HTML5里面的url可以写HLS地址。总之,在移动端是以HLS为主。
4. HDS
adobe自己的HLS,和不好用。
5. DASH
各家提出的HLS,目前还没有广泛应用。

对比以下互联网上用的流媒体分发方式:

  • HLS:apple的HLS,支持点播和直播。
  • HTTP:即HTTP stream,各家自己定义的http流,应用于国内点播视频网站。
  • RTMP:直播应用,对实时性有一定要求,以PC为主。

五.协议的应用方式
    • 推荐的方式是:
    • 编码器输出RTMP协议。
    • 流媒体系统接入使用RTMP协议。
    • 流媒体系统内部直播分发使用RTMP。
    • PC+直播+实时性要求高:使用flash播放RTMP。
    • PC+直播+没有实时性要求:使用RTMP或者HLS均可。
    • PC+点播:使用HTTP或者HLS。
    • Apple IOS/OSX:都使用HLS(实时性要求高得自己解析RTMP,或者使用外部库,
      譬如https://www.vitamio.org
    • Andorid:和IOS一样,不过可以确定的是可以自己开发支持RTMP。

六.RTSP、 RTMP、HTTP的共同点及区别
  • 共同点
    1. RTSP RTMP HTTP都是在应用应用层。
    2.理论上RTSP RTMPHTTP都可以做直播和点播,但一般做直播用RTSP RTMP,做点播用HTTP。做视频会议的时候原来用SIP协议,现在基本上被RTMP协议取代了。
  • 区别
    1. HTTP: 即超文本传送协议(ftp即文件传输协议)。
    HTTP:(Real Time Streaming Protocol),实时流传输协议。
    HTTP全称Routing Table Maintenance Protocol(路由选择表维护协议)。
    2.HTTP将所有的数据作为文件做处理。http协议不是流媒体协议。
    RTMP和RTSP协议是流媒体协议。
    3. RTMP协议是Adobe的私有协议,未完全公开,RTSP协议和HTTP协议是共有协议,并有专门机构做维护。
    4. RTMP协议一般传输的是flv,f4v格式流,RTSP协议一般传输的是ts,mp4格式的流。HTTP没有特定的流。
    5. RTSP传输一般需要2-3个通道,命令和数据通道分离,HTTP和RTMP一般在TCP一个通道上传输命令和数据。

文章部分摘自:
https://www.cnblogs.com/my_life/articles/5593892.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350