UDP代表用户数据报协议,是一种不可靠的无连接传输协议。术语无连接意味着发送方不知道接收方:发送数据时不知道预期的接收方是否在那里,因为在发送数据之前没有握手。
UDP 就像在邮局中用标准邮票寄出一封信;你不会得到它已经到达的确认,你只是希望它确实如此。
TCPTCP代表传输控制协议,是一种基于可靠连接的传输协议。由于 TCP 是基于连接的,因此发送方完全了解预期接收方的状态。在发送任何数据之前,必须进行握手并在发送方和接收方之间形成连接。
TCP 就像使用有记录的邮政服务发送一封信件,您会收到一封确认信件已到达,如果没有收到,您可以再次发送。
通信类型单播单播是客户端和服务器之间的一对一连接(大多数情况下服务器是视频编码器)。单播使用 IP 传送方法,例如传输控制协议 (TCP) 和用户数据报协议 (UDP)。客户端与服务器有直接关系。每个连接到服务器的单播客户端都会占用额外的带宽。例如,如果您有 10 个客户端都在播放 100 千位每秒 (Kbps) 的流,那么这些客户端作为一个组将占用 1,000 Kbps。如果您只有一个客户端播放 100 Kbps 流,则仅使用 100 Kbps。
组播多播是真正的广播。客户端和服务器之间没有直接关系。这类似于在收音机上调谐到一个电台。侦听多播的每个客户端都不会在服务器上增加额外的开销。实际上,服务器只发出一个流。无论只有一个客户端还是 1,000 个客户端在侦听,服务器上都会遇到相同的负载。
网络交换机或路由器的工作是从编码器接收单个流并将其发送给所有客户端。
请注意:Internet 上的多播通常不实用,因为只有一小部分 Internet 支持多播。
即使在本地网络上,您也需要小心处理多播,因为无法正确处理多播的路由器和交换机会将其视为广播消息。这意味着如果您的编码器连接到未配置的以太网交换机并发送多播消息,它将在所有端口上广播此消息并用您的流淹没整个网络。如果网络专用于该流,这不是大问题,但是如果网络用于其他用途,则会导致性能问题。
此问题的解决方案是使用与 IGMP 兼容的交换机,这些交换机将仅在连接到订阅该多播组的设备的端口上转发多播流量。换句话说,交换机只会在连接到尝试调入多播流的设备的端口上转发流。
播送广播是一种通信类型,其中数据从一台计算机发送一次,该数据的副本将转发到所有设备。 在广播中,只有一个发送者,数据只发送一次。但是广播数据会传送到所有连接的设备。
交换机设计将转发广播流量,路由器设计将丢弃广播流量。换句话说,路由器不允许来自一个 LAN 的广播穿过路由器到达另一个网段。路由器的主要功能是将一个大的广播域划分为多个较小的广播域。
其他常用术语数据包丢失当通过计算机网络传输的一个或多个数据包未能到达其目的地时,就会发生数据包丢失。通常以太网上的丢包是不存在的,如果信号强度好,WiFi 上的丢包是中等的,而互联网上的丢包在很大程度上取决于运营商的路径,但在互联网连接不佳的情况下可能会很严重。
缓冲缓冲区或缓存是播放开始前存储在内存中的视频量。较大的缓冲区会导致更多的延迟,但在存在抖动和数据包丢失时会提供更高的稳定性。
抖动抖动是数据包到达之间的时间变化,由网络拥塞、定时漂移或路由更改引起。抖动是流式传输时非常重要的因素,因为网络路径上的延迟不断变化可能会导致数据包延迟到达,解码器必须有足够大的缓冲区以在等待延迟数据包的同时继续播放。
流媒体协议最常用的流媒体协议、它们的工作方式以及它们最适合的地方。
实时传输协议/RTSPRTP 和 RTSP 是两个完全不同的协议,但通常一起使用,尽管 RTP 可以单独使用 RTSP 不能没有 RTP 使用,这意味着如果您看到术语 RTSP,它总是表示 RTP/RTSP。
RTP 代表实时传输协议,用于承载实际的媒体流,在大多数情况下,H264 或 MPEG4 视频位于 RTP 包装器内。 RTSP是real-time streaming protocol的简称,用于建立和控制媒体流。
这在实践中意味着什么?
RTP 本身就是一种推送协议。这意味着如果编码器想要使用 RTP 将视频发送到解码器,则编码器需要知道解码器的 IP 地址并将视频推送到监听解码器。
RTP/RTSP 是一种拉协议,这意味着解码器使用 RTSP 协议连接到编码器,然后编码器使用 RTP 协议将视频发送到解码器。多个解码器可以连接到一个 RTSP 服务器(这称为多单播)。 RTSP 还支持多播。
它是基于 TCP 还是基于 UDP?
其实也可以。通常 RTSP 在 TCP 上工作,而实际的 RTP 视频流是通过 UDP 发送的;视频和音频通过一对 UDP 端口发送。这对于通过 LAN 进行流式传输很好,但如果在 Internet 上使用可能会很麻烦,因为它需要多个端口。此外,由于视频和音频是分开发送的,我们依赖于 RTP 标头中的时间戳来进行同步。
因此,当在 Internet 上使用 RTSP 时,我们可以通过用于 RTSP 的同一 TCP 连接交错 RTP 视频和音频流。一切都在端口 554 TCP 上运行。
它适合做什么?
RTSP 非常适合在抖动和数据包丢失最少的本地网络上流式传输到多个设备。RTSP 适用于几乎所有的解码器和软件播放器。
MPEG-2 传输流MPEG-TS 可能是广播行业最常用的流媒体协议,与大多数机顶盒和解码器兼容。MPEG-TS 通常称为 MPEG 2 传输流,尽管包装器中的视频实际上是 H264 / MPEG 4 Part 10。MPEG TS 通常是一种推送协议,它通过一个流传输音频和视频。
它是基于 TCP 还是基于 UDP?
通常它是基于 UDP 的,这意味着如果在流中出现数据包丢失故障,因为丢失的数据不会重新发送,但是高端编码器使用称为 FEC(前向纠错)的技术来解决这个问题。FEC 允许解码器对丢失的数据进行有根据的猜测并填补空白。
一些设备也支持 MPEG-TS over TCP,尽管这不是一个常用的标准,例如 Teradek 设备支持 MPEG-TS over TCP。
实时播放协议这是 flash 流媒体,主要用于将视频放入 CDN 以在线分发给大量观众。
它适合做什么?
RTMP 在互联网上是可靠的。它的低延迟和低开销使其成为流式传输到所有主要 CDN(YouTube Live、UStream、Wowza 等)的标准。也可用于点对点连接一些编码器和解码器(如Datavideo NVS和NVD系列)。
它是基于 TCP 还是基于 UDP?
它是基于 TCP 的。
HTTP 实时流式传输 (HLS)
这代表 HTTP Live Streaming,该协议用于流式传输运行 Safari 网络浏览器的 IOS 设备的视频。由于 HLS 以大块下载视频并且播放器总是在开始播放之前下载一个完整的块,因此预计会出现许多秒的延迟。
它适合做什么?
当延迟不是关键但稳定性很重要时,HLS 通常用于流式传输到 IOS 设备。HLS 现在也正在成为大多数 CDN 用来在幕后传送视频的标准协议,但这超出了本文档的范围。
它是基于 TCP 还是基于 UDP?
它使用基于 TCP 的协议 HTTP。
Zixi该协议由 Zixi 专门设计,用于在数据包丢失和抖动高的极差网络(例如跨大西洋)上提供可靠的传输。Zixi 使用了一些非常巧妙的纠错方法,即使在丢包巨大的情况下也能保持稳定的图像。
它适合做什么?
在 MPEG-TS 和 RTMP 无法传送的极差互联网连接上进行低延迟流式传输。
它是基于 TCP 还是基于 UDP?
它基于 UDP,但具有前向纠错功能,因此可实现与基于 TCP 的协议相似的可靠性。