一、流媒体传输协议
1.实时传输协议RTP
-
针对多媒体数据流的一种传输协议,建立在UDP协议上,属于传输层协议。
-
定义互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议)、视频会议和视频电话系统(配合H.263或SIP)。
2.实时传输控制协议RTCP
-
RTCP为RTP媒体流提供信道外控制,定期在流多媒体会话参加者之间传输控制数据,属于传输层协议。。
-
RTCP的主要功能是为RTP所提供的服务质量提供反馈,收集相关媒体连接的统计信息,例如:传输字节数,传输分组数,丢失分组数,时延抖动,单向和双向网络延迟等。
3.实时流协议RTSP
-
RTSP协议定义了一对多应用程序如何有效通过IP网络传送多媒体数据。
-
RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输,属于应用层协议。
-
RTSP与RTP最大的区别在于:RTSP是一种双向实时数据传输协议,它允许客户端向服务器端发送请求,如回放、快进、倒退等操作。
-
缺点:因为互联网网络环境的不稳定性,RTSP+RTP较少用于互联网视音频传输。
4.资源预定协议RSVP
-
使用RSVP预留一部分网络资源(即带宽),能在一定程度上为流媒体的传输提供QoS,在RTP协议之下,属于网络层协议。
5.实时消息传输协议RTMP/RTMPS
-
Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议,属于应用层协议。
-
它有三种变种:
-
工作在TCP之上的明文协议,使用端口1935;
-
RTMPT封装在HTTP请求之中,可穿越防火墙;
-
RTMPS类似RTMPT,但使用的是HTTPS连接。
-
-
RTMP视频播放的特点:
-
RTMP协议是采用实时的流式传输,所以不会缓存文件到客户端。
-
视频流可以随便拖动,既可以从任意时间点向服务器发送请求进行播放,并不需要视频有关键帧。
-
RTMP协议支持点播/回放(通俗点将就是支持把flv,f4v,mp4文件放在RTMP服务器,客户端可以直接播放),直播(边录制视频边播放)
-
在浏览器端依赖Flash,可以满足直播产品的需求,但不能满足视频通话的产品需求。
-
-
RTMP推流:librtmp、ffmpeg
6.微软媒体服务器协议MMS
-
用来访问并流式接收WindowMedia服务器中.asf文件的一种协议。
-
MMS协议用于访问Windows Media发布点上的单播内容,MMS的预设端口是1755.
7.HTTP Live Streaming [IOS设备直播]
-
苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用于iOS系统。
-
HLS直播最大的不同在于,直播客户端获取到的并不是一个完整的数据流,HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。
-
解决苹果原生环境中的流媒体播放,这个协议可以方便地让Mac和iPhone播放视频流,不依赖Adobe(RTMP)。
-
优点: HTTP 传输,有效避免防火墙拦截, 支持网络分发,CDN 支持良好,自带多码率自适应。
-
缺点:
-
实时性差,延迟高,延迟基本在 10s+ 以上;
-
文件碎片,双刃剑,ts 切片较小,会造成海量小文件。
-
【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~</