一、流媒体协议
1. RTMP/RTMPT/RTMPS/RTMPE 等多变种
是应用层协议,使用TCP作为底层传输协议,并提供了低延迟、高带宽利用率和实时性的特点。
(1)RTMP协议是Adobe的私有协议,未完全公开
(2)一般传输的是 flv,f4v 格式流
2. RTP/RTCP/SRTP
都作用于OSI模型中的传输层。
RTCP是RTP的补充协议,用于提供对RTP会话的控制和监控。RTCP负责传输会话中的控制信息,包括发送者和接收者的统计信息、网络延迟、会话质量反馈等
SRTP是在RTP(Real-time Transport Protocol)的基础上添加了加密和认证机制,用于保护音频和视频数据的机密性和完整性。
3. RTSP/RTSPS
是一种应用层协议,本身并不传输媒体数据,但它可以与其他协议结合使用,如RTP来实现实时流媒体的传输。
(1)RTSP可以使用TCP作为底层传输协议,也可以使用UDP
(2)RTSPS是RTSP的安全版本,使用了TLS/SSL协议来加密和保护数据传输,以防止数据在传输过程中被窃听和篡改。RTSPS通常使用TCP作为底层传输协议。
(3)一般传输的是 ts、mp4 格式的流
4. HTTP-FLV
是一个应用层协议,用于传输Flash Video (FLV) 格式的音视频数据
5. HTTP-TS
基于MPEG-2 TS(Transport Stream)标准。它将视频、音频和其他媒体数据打包成小的TS分片,并通过HTTP协议进行传输。每个TS分片通常包含几秒钟的媒体数据。这种分片的方式使得流媒体可以通过HTTP协议进行可靠的传输,并且具有较低的延迟。在接收端,客户端会按顺序下载和播放这些TS分片,从而实现连续的流媒体播放。
6. HTTP-FMP4
基于Fragmented MP4(FMP4)标准。与HTTP-TS不同,HTTP-FMP4将视频、音频和其他媒体数据打包成小的MP4片段(Fragment),而不是MPEG-2 TS分片。这些MP4片段通常包含几秒钟的媒体数据。与HTTP-TS相比,HTTP-FMP4在流媒体传输中更为常见,因为它具有更广泛的兼容性和较低的延迟。它也更适合在移动设备和浏览器中播放。
7. MP4
MP4(MPEG-4 Part 14)是一种常见的媒体容器格式,用于存储音频、视频和其他媒体数据。它可以包含多种编码的音频和视频流,以及字幕、章节标记和元数据等信息。MP4文件通常用于存储和传输点播内容。
MP4和HTTP-FMP4之间的主要区别在于:
- 格式:MP4是媒体容器格式,用于存储和传输媒体数据。HTTP-FMP4是基于FMP4标准的流媒体格式,用于通过HTTP协议传输切分后的MP4片段。
- 传输方式:MP4文件可以通过各种传输方式进行传输,包括HTTP、FTP等。HTTP-FMP4则是特定于HTTP协议的流媒体传输格式,利用HTTP分片传输技术将切分后的MP4片段逐个传输和播放。
- 应用场景:MP4适用于存储和传输点播内容,用户可以随时选择和播放。HTTP-FMP4主要用于流媒体传输,支持实时流媒体和自适应流媒体传输,适用于直播、实时通信和点播等应用。
8. HLS
是一个应用层协议,将媒体文件切片成小的TS(Transport Stream)文件,通过HTTP协议进行分段传输
9. DASH
是一个应用层协议,是一种广义术语,描述基于HTTP的动态自适应流媒体传输方法,由MPEG提供支持。它将媒体文件切片成小的MP4文件,通过HTTP协议进行分段传输,并根据网络条件和设备能力动态选择最适合的片段进行播放
10. MPEG-DASH
MPEG-DASH是由国际标准化组织ISO/IEC MPEG(Moving Picture Experts Group)制定的标准,即ISO/IEC 23009-1。MPEG-DASH建立在DASH的概念和原则之上,是一个具体的标准,提供了标准化的规范和指南,旨在实现跨不同厂商和平台的互操作性。提供了一些特性(如自适应比特率调整、多音轨和字幕支持等)
11. WebSocket-FLV
使用WebSocket协议传输FLV(Flash Video)格式的流媒体协议
12. WebSocket-TS
使用WebSocket协议传输MPEG-2 TS(Transport Stream)格式的流媒体
13. WebSocket-FMP4
使用WebSocket协议传输Fragmented MP4(fMP4)格式的流媒体
14. SRT
SRT是一个在传输层提供可靠和安全数据传输的协议。它使用UDP作为底层传输协议,并在其上添加了自定义的机制来实现可靠性和安全性。是一个传输层协议。
SRT全称Secure Reliable Transport,是Haivision推出的一个广播传输协议,主要是为了 替代RTMP,实际上OBS、vMix、FFmpeg等直播推流编码器都已经支持了SRT。SRT使用的封装是TS封装,因此对于新的Codec天然就支持。而SRT基于UDP协议,因此对于延迟和弱网传输,也比RTMP要好不少。 一般RTMP延迟在1到3秒以上,而SRT的延迟在300到500毫秒,而且在弱网下表现也很稳定。在广播电视l领域,由于长距离跨国跨地区 传输,或者户外广播时,网络不稳定,因此SRT比RTMP的优势会更明显。
15. SCTP
是一个传输层协议,它与传输控制协议(TCP)和用户数据报协议(UDP)类似,是一种作为一个独立的传输层协议而存在。
主要特点:
- 可靠性:SCTP提供了可靠的传输机制,通过使用序列号、确认机制和重传机制来确保数据的可靠传输。它还能够检测和恢复网络中的丢失、重复、乱序和拥塞等问题。
- 多流传输:SCTP支持将数据划分为多个独立的逻辑流进行传输。每个流都有自己的序列号和确认机制,可以独立地传输和重传数据。这种多流传输机制使得SCTP适用于同时传输多个应用程序数据流的场景,提供更好的性能和效率。
- 心跳机制:SCTP通过发送心跳包来检测对等端的可用性。心跳机制可以用于检测连接中断、故障节点和网络拥塞等情况,并触发相应的处理机制。
- 有序交付:SCTP可以保证数据按照发送的顺序交付给应用程序,即使在网络中发生乱序的情况下也能够进行重新排序。
- 拥塞控制:SCTP具有自适应的拥塞控制算法,可以根据网络拥塞程度动态调整发送速率,以避免网络拥塞和数据丢失。
16. RIST
RIST是一个在传输层使用UDP协议,并在应用层提供可靠性和流控制功能的流传输协议。它并不是一个纯粹的应用层协议,而是在传输层和应用层之间操作的协议。
RIST的设计目标是解决流媒体传输中的可靠性和性能问题,使得传输更加稳定和高效。
RIST的主要特点和功能包括:
- 可靠性:RIST使用前向纠错(Forward Error Correction)和重传机制来确保数据的可靠传输。前向纠错技术允许接收端在接收到部分丢失或损坏的数据时进行恢复,而重传机制可在发生数据丢失时重新发送数据。
- 安全性:RIST支持加密和身份验证机制,以保护传输的数据的机密性和完整性。它可以使用TLS(Transport Layer Security)协议对传输进行加密,并使用数字证书对通信双方进行身份验证。
- 低延迟:RIST通过优化传输机制和减少协议开销,以实现较低的传输延迟。这对于实时应用程序(如直播和远程协作)至关重要,可以提供更好的用户体验。
- 带宽利用:RIST使用动态带宽控制和拥塞控制机制,以适应网络条件和变化的带宽。它可根据当前网络状况自适应地调整传输速率,以充分利用可用的带宽并避免网络拥塞。
17. SIP(SIP-T )
SIP 是应用层协议,SIP-T是SIP的一个变体,专门设计用于传统电话网络(Public Switched Telephone Network,PSTN)与IP网络之间的互联。它是一种扩展的SIP协议,支持传统电话网络中的信令和媒体传输。
18. SDP
SDP是一个应用层协议,通常与其他应用层协议(如SIP、WebRTC等)一起使用,以实现多媒体通信的功能。
19. WebRTC
WebRTC(Web Real-Time Communication)不是一个单独的协议,而是一个包含多个协议和技术的集合,用于在Web浏览器之间实现实时通信。因此,WebRTC并不属于单一的协议层,而是跨越了多个协议层。
WebRTC涵盖了应用层、传输层和网络层等多个协议层的功能和特性。(1)在应用层,WebRTC提供了JavaScript API,使开发者能够通过Web浏览器直接访问音频、视频和数据流,使开发者能够从摄像头、