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切片文件通常较小, 海量碎片在文件分发, 一致性缓存, 存储等方面都有较大挑战。
优点
不用考虑防火墙或者代理的问题采用短时长,分片播放,客户端可以平滑的切换码率,适应不同的带宽在IS0有较好的支持音视频开发资料包:音视频流媒体高级开发FFmpegWebRTCRTMPRTSPHLSRTP播放器
RTMPRTMP是实时消息传输协议,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 是视频封装格式)。
延时较短,应用在直播领域
支持加密
RTMP特点:
RTMP 是专为流媒体开发的协议,对底层的优化比其它协议更加优秀,同时它 Adobe Flash 支持好,基本上所有的编码器(摄像头之类)都支持 RTMP 输出。支持 Flash 的浏览器都能播放 RTMP 协议传输的流。
RTMP 的延迟相对较低,一般延时在 1-3s 之间,一般的视频会议,互动式直播,是完全是够用的。
基于 TCP 传输,使用非公共端口,可能会被防火墙阻拦。
RTMP 为 Adobe 私有协议,很多设备无法播放,特别是在 iOS 端,需要使用第三方解码器才能播放;
直接播放 RTMP 流需要浏览器支持 Flash。
RTSPReal 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协议的网络应用协议。
HTTPHTTP stream是各家自己定义的http流,应用于国内点播视频网站。HTTP用于点播,本质上还是文件分发,实时性差。