H.264 (.mp4) 视频流的 MPEG-TS 和 RTP 之间的区别?

Difference between MPEG-TS and RTP for H.264 (.mp4) video streaming?

所以我正在尝试使用 ffmpeg 工具通过以太网流式传输 H.264 (.mp4) 视频。我阅读了一些关于通过以太网传输 H.264 视频的内​​容,了解到有两种方法; mpeg-ts 和 RTP(均通过 UDP)。我已经能够通过 ffmpeg 中的两种方法(通过本地主机)流式传输 .mp4 视频,并且没有注意到质量或延迟方面的任何差异。两种视频传输协议在概念和效率上有何不同?还是我混合了两个不同的概念?感谢您的帮助!

RTP has less overhead than using a transport stream, since RTP uses the full Ethernet packet size available (MTU of around 1500 bytes normally), whereas TS packets are 188 bytes in size。此外,通常用于通过网络发送 TS 的 ffmpeg 的 UDP 协议不支持接收端的数据包重新排序。

micha137 的回答并没有涵盖所有的可能性。

MPEG-TS可以直接通过UDP承载,也可以通过RTP(over UDP)承载。 RTP 添加一个 12 字节(最小)header 包含用于同步的时间戳。

在这两种情况下,无论底层数据包是RTP还是UDP,通常的做法是将7个188Byte的TS数据包放在底层数据包中。 (一些专业编码器还允许您为每个 UDP 设置 1 个或 4 个数据包)

但更令人困惑的是,RTP 还可以携带其他媒体类型(语音等),包括将 H.264 NALU 直接映射到 RTP 负载中。

在所有封装格式中,H.264-NALU-over-RTP-over-UDP 的开销最低,因为它避免了 MPEG-TS 数据包的重复数据包 header。

有关详细信息,请参阅 RTP Payload Formats

广播应用程序通常使用 MPEG-TS,最常见的是直接通过 UDP,但也有 RTP-over-UDP。

互联网应用程序确实使用了 H.264-over-RTP,但这已被(主要)使用 TS 文件块的 HLS 和(主要)使用 CMAF 碎片 mp4 文件的 MPEG-DASH 所取代。