⾳视频直播流程介绍
常见视频流协议介绍
金丝雀定位
HLS
HLS是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可⽀持流媒体的直 播和点播,主要应⽤在 iOS 系统,为 iOS 设备(如 iPhone、iPad)提供⾳视频直播和点播⽅案。
HLS(HTTP Live Streaming)->缓存ts⽂件,同时服务器会建⽴⼀个m3u8的索引⽂件来维护最新的ts⽚段
⼀个ts⽂件⼤概是⼀个10秒的视频⽚段
实际情况下会有2-3个ts⽂件的延时,⼤概是20~30s
跨平台性:⽀持iOS/Android/浏览器,通过http请求即可,通⽤性强。合闸脱扣器
穿墙能⼒强:由于HLS是基于HTTP协议的,基本不会遇到被防⽕墙屏蔽的情况。
切换码率快(清晰度):⾃带多码率⾃适应,客户端可以选择从许多不同的备⽤源中以不同的速率下载同样的资源,允许流媒体会话适应>不同的数据速率。客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。 负载均衡:HLS基于⽆状态协议(HTTP),客户端只是按照顺序使⽤下载存储在服务器的普通TS⽂件,做负责均衡如同普通的HTTP⽂件服务器的负载均衡⼀样简单。
实时性差:苹果官⽅建议是请求到3个ts切⽚⽂件之后才开始播放。所以⼀般很少⽤HLS做为互联⽹直播的传输协议。假设列表⾥⾯的包含5个ts⽂件,每个ts⽂件包含5秒的视频内容,那么整体的延迟就是25秒。苹果官⽅推荐的ts时长时10s,所以这样就会⼤概有(3 x 10)秒的延迟。
⽂件碎⽚化严重:对于点播服务来说, 由于ts切⽚⽂件通常较⼩, 海量碎⽚在⽂件分发, ⼀致性缓存, 存储等⽅⾯都有较⼤挑战。
钢水包优点
1. 不⽤考虑防⽕墙或者代理的问题
2. 采⽤短时长,分⽚播放,客户端可以平滑的切换码率,适应不同的带宽
3. 在IS0有较好的⽀持
RTMP
RTMP是实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间⾳频、视频和数据传输开发的开放协议。协议基于 TCP,是⼀个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。
RTMP 是⼀种设计⽤来进⾏实时数据通信的⽹络协议,主要⽤来在 Flash/AIR 平台和⽀持RTMP协议的流媒体/交互服务器之间进⾏⾳视频和数据通信。
信号采集系统
RTMP是由Adobe公司提出的,是⼀种设计⽤来进⾏实时数据通信的⽹络协议,属于TCP/IP五层中的应⽤层,基于TCP协议,默认使⽤端⼝1935。RTMP中的基本数据单元称为消息(Message),传输的过程中消息会被拆分为更⼩的消息块(Chunk)单元,再将分割后的消息块通过 TCP 协议传输,接收端再将接收到的消息块恢复成流媒体数据。RTMP协议⼀般传输的是 flv,f4v 格式流(注意:RTMP 是协议,flv、f4v 是视频封装格式)。
延时较短,应⽤在直播领域
⽀持加密欧米伽3榨油机
RTMP特点:
RTMP 是专为流媒体开发的协议,对底层的优化⽐其它协议更加优秀,同时它 Adobe Flash ⽀持好,基本上所有的编码器(摄像头之类)都⽀持 RTMP 输出。⽀持 Flash 的浏览器都能播放 RTMP 协议传输的流。
RTMP 的延迟相对较低,⼀般延时在 1-3s 之间,⼀般的视频会议,互动式直播,是完全是够⽤的。
基于 TCP 传输,使⽤⾮公共端⼝,可能会被防⽕墙阻拦。
RTMP 为 Adobe 私有协议,很多设备⽆法播放,特别是在 iOS 端,需要使⽤第三⽅解码器才能播放;
直接播放 RTMP 流需要浏览器⽀持 Flash。
RTSP
Real Time Streaming Protocol,实时流传输协议
RTSP是TCP/IP协议体系中的⼀个应⽤层协议,该协议定义了⼀对多应⽤程序如何有效通过IP⽹络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使⽤TCP或RTP完成数据传输。HTTP与RTSP相⽐,HTTP传送HTML,⽽RTP传送的是多媒体数据。
HTTP请求由客户机发出,服务器做出响应;RTSP可以是双向的,即客户机和服务器都可以发出请求。
RTSP与RTP最⼤的区别在于:RTSP是⼀种双向实时数据传输协议,它允许客户端向服务器端发送请求,如回放、快进、倒退等操作。当然RTSP可基于RTP来传送数据,还可以选择TCP、UDP、组播UDP等通道来发送数据,具有很好的扩展性。它是⼀种类似于HTTP协议的⽹络应⽤协议。
HTTP节能烤箱
HTTP stream是各家⾃⼰定义的http流,应⽤于国内点播视频⽹站。
HTTP⽤于点播,本质上还是⽂件分发,实时性差。