简介
本文主要介绍了流媒体协议、TCP与UDP协议、RTMP与RTSP协议,RTMP 和 RTSP 流媒体协议都有各自的优势。
RTMP 与 RTSP 是比较常见的两种流媒体协议,那么什么是RTMP?什么是RTSP?它们两之间有什么区别?使用的时候应该如何选择?
什么是流媒体协议?
流媒体协议,英文学名Streaming Protocol,用一句人话来解释:流媒体协议是一种用于通过 Web 传递多媒体的协议。
每次观看直播或点播视频时,背后的技术就是流媒体协议。
流媒体协议有很多,主要分为三大类:
- 传统视频流协议
- 基于 HTTP 的自适应协议
- 新技术
传统视频流协议
传统视频流协议主要有:
- RTMP
- RTSP
基于 HTTP 的自适应协议
基于 HTTP 的自适应协议主要有:
- Apple HLS
- Low-Latency HLS
- MPEG-DASH
- Adobe HDS
新技术
新技术主要有:
- SRT
- WebRTC
而我们今天着重要介绍和比较的就是传统视频流协议:RTMP和RTSP。
TCP 和 UDP
在探讨RTMP和RTSP前,我们有必要先了解一下TCP 和 UDP,因为 RTMP 是基于 TCP 开发的
,那么 RTSP 使用到了 UDP
。
TCP
TCP 英文全称:Transmission Control Protocol,中文意思:传输控制协议。
TCP协议是位于应用层和网络层之间的传输控制协议,用于提供可靠的流传输服务,即以字节流的形式传输数据和以字节流的形式接收数据。TCP 使用确认机制来检查数据是否安全可靠地到达,在发送端进行复用,在接收端进行解复用。TCP 使用三个阶段来实现连接定向功能,如连接建立、数据传输和连接终止。
UDP
UDP 英文全称:User Datagram Protocol ,中文意思:用户数据报协议。
UDP是一种无连接协议,即将数据从一端传输到另一端;无需建立连接。UDP 也位于应用层和网络层之间。它还以数据包的形式传递数据或信息;这些数据包称为用户数据报。UDP 使用多路复用来处理来自多个进程的传出用户数据报,并使用解复用来处理进入同一主机上不同进程的传入用户数据报。
TCP 与 UDP 区别
TCP 是面向连接的,而 UDP 是无连接的
TCP 是重量级的,而 UDP 是轻量级的
TCP 提供可靠的服务,而 UDP 不提供可靠的服务
TCP 支持重传机制,而 UDP 不支持
TCP 数据包按顺序到达接收器,而 UDP 无序
TCP 不支持广播,而 UDP 支持广播
TCP 连接是一个字节流,而 UDP 连接是消息流
以上就是最基础的部分,下面我切入今天的主题:RTMP 和 RTSP 协议。
RTMP
- 英文全称:Real Time Messaging Protocol
- 中文意思:实时消息协议
- 底层协议:TCP
- 应用级视频流协议
- 视频编解码器:H.264
- 音频编解码器:AAC
- 延迟:3 - 30 秒
RTMP 2005 年诞生,由 Macromedia 开发,后来被 Adobe 收购,在流媒体市场上有着悠久的历史。最初用于在 RTMP 服务器和用户设备上的 Flash 播放器之间传输数据,不过Flash 于 2020 年正式结束了。
RTMP 的最大优点是可以在服务器和客户端服务器之间保持稳定的连接,无论用户的互联网连接质量如何,它都可以无缝低延迟进行流媒体传输。这个技术主要通过将数据流分成相等的小部分(音频数据默认为 64 字节,视频数据默认为 128 字节)并将它们顺序传输到接收设备,然后将它们重新组合成视频流来实现的。
RTMP 工作原理
一般来说视频流是这样工作的:
- 摄像头捕获视频
- 通过编码器将视频流传输到视频平台服务器
- 视频平台处理视频流
- 通过CDN分发到离用户最近的服务器上
- 最后视频流就能成功的到达用户设备
那么这个环节中RTMP就起到了非常重要的作用,在视频从摄像头到服务器的过程中,RTMP将大量数据分割成小块并跨多个虚拟通道传输,在视频源和 RTMP 服务器之间提供了稳定和流畅的视频流。
RTMP 最大的缺点是它与 HTML5 播放器不兼容,这样的话必须使用另一种协议,例如 HLS来传输视频文件到达用户的设备,此外,RTMP 容易受到带宽问题的影响。
RTSP
- 英文全称:Real Time Streaming Protocol
- 中文意思:实时流协议
- 底层协议:TCP 和 UDP
- 网络控制协议
- 视频编解码器:H.265
- 音频编解码器:AAC
- 延迟:2 秒
RTSP 1996年诞生,由 RealNetworks、Netscape 和哥伦比亚大学的专家联合开发,用于控制 VHS 式视频流的娱乐和通信系统,RTSP 使用高效的 RTP 协议,将流数据分解成更小的块,这样可以更快地传递。
RTSP 支持可靠的分段流,这意味着用户可以在仍在下载流的同时继续观看流。
Android 和 iOS 设备没有开箱即用的 RTSP 兼容播放器,所以普及度并不高,但 RTSP 在许多监控 和闭路电视 (CCTV) 应用非常广泛,远程摄像头、在线教育和互联网直播等,都用的比较频繁。
上面提到RTSP使用RTP协议进行分解视频块的,这里我们来讲一下RTP协议。
RTP协议,英文全称:Real-time Transport Protocol,中文就是实时传输协议,它的底层其实就是UDP,这样一来就可以实现低延迟。
除了RTP协议,为确保流畅和一致的流传输,RTSP 还使用另外两种网络通信协议:
- TCP 收发控制命令(例如播放或停止请求)
- UDP 传送音频、视频和数据
这个怎么理解呢?
TCP可靠传输,比如用户按下播放或者停止播放的时候,这个是个准确的请求,这个需要保证可靠性,这个时候TCP作用就体现了。
UDP是低延迟的协议,那么用于传送音频、视频和数据可以达到非常高效的效果。
RTSP 工作原理
- 用户设备向视频流平台发送 RTSP 请求
- 视频流平台返回可以操作的请求列表,比如播放、暂停等
- 用户设备向视频流平台发送具体的请求,比如播放
- 视频流平台解析请求并调用指定机制启动视频流处理
由于 RTSP 依赖于专用服务器,并且依赖于 RTP,因此该协议不支持加密视频内容或重传丢失的数据包。
RTMP 与 RTSP 区别
1.延迟
RTMP:3-30秒
RTSP:2-5秒
2.音频编解码器
RTMP:AAC、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex、Opus、Vorbis
RTSP:AAC、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex、Opus、Vorbis
3、视频编解码器
RTMP:H.264, VP8, VP6, Sorenson Spark®, Screen Video v1 & v2
RTSP:H.265 (preview), H.264, VP9, VP8
4、优点
RTMP: 低延迟适应性灵活性不需要缓冲
RTSP: 低延迟分段流式传输
5、缺点
RTMP: 带宽问题HTML5 不支持某些浏览器和设备的兼容性问题安全性有点低
RTSP:
HTTP 不兼容
依赖于其他协议
RTMP 与 RTSP 该如何选择?
其实看完RTMP 与 RTSP 区别,应该对于使用场景有见解式的认识了。
IP 摄像机、物联网设备,那么选择 RTSP准不会错
第三方流媒体应用,那么选择RTMP准不会错
总结
本文主要介绍了流媒体协议、TCP与UDP协议、RTMP与RTSP协议,RTMP 和 RTSP 流媒体协议都有各自的优势。
RTMP 提供与不同摄取设备的兼容性和低延迟流媒体的稳定性,但是,您需要一个特定的 Flash Media Server 来使用 RTMP 分发您的内容,所以RTMP 适用于主要的第三方流应用程序和较旧的硬件编码器;
RTSP 最适用于 IP 摄像机和运行 IP 摄像机的设备,例如无人机。