前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于RTP和SRT之间的互操作性,你需要了解什么?

关于RTP和SRT之间的互操作性,你需要了解什么?

作者头像
LiveVideoStack
发布2019-09-19 16:16:30
1.7K0
发布2019-09-19 16:16:30
举报
文章被收录于专栏:音视频技术音视频技术

文 / Mark Cymontkowski

译 / John

原文

https://www.srtalliance.org/interoperability-between-rtp-and-srt/

许多企业现有的内部部署广播工作流程都基于RTP协议,但是您是否知道SRT可以通过在不可靠的网络(例如公共网络)上利用SRT隧道传输RTP来扩展这些工作流程的范围?
在这篇文章中,我们将以一个非常简单的端到端工作流为例向您展示这一过程。下图显示了如何使用RTP将MPEG2传输流从视频编码器发送到受保护网络(例如企业LAN或MPLS租用线路)内的视频解码器。

通过可靠网络(例如局域网)进行RTP传输

用公共互联网取代专用网络并不是那么简单,因为不可靠的网络会引入数据包丢失和抖动。此外,流在离开或进入企业网络时必须穿过防火墙。这期间内容不再受到保护,非常容易被暴露。

RTP通过不可靠的网络传输,如公共互联网

SRT能够恢复丢失的数据包,也能加密内容和遍历防火墙,这使其非常适合用作跨公共互联网的隧道。
以下是它的工作原理:
RTP流量被发送到UDP接收器,UDP接收器通过SRT连接转发包括RTP报头在内的MPEG-TS有效载荷;而在接收器端,流作为UDP播放,但由于RTP报头仍然存在,因此它会将本地RTP流发送到现有的RTP解码器。

通过SRT在不可靠的网络(例如公共互联网)上隧道传输RTP

可以使用开源SRT包中的srt-live-transmit示例应用程序来评估此配置。来自编码器的源RTP流必须指向SRT发送器的UDP输入并将目标位置处接收器的UDP输出发送到解码器的RTP输入端口。
由于应用程序在从UDP读取数据时期望没有RTP头的MPEG-TS流量,因此默认情况下,它被配置成为每UDP包接收1316字节(7个MPEG-TS帧)的有效载荷。该命令行选项用于增加SRT有效负载大小。
这些是发送方(UDP到SRT)和接收方(SRT到UDP)的两个srt-live-transmit示例命令行:
在该示例中,源(例如RTP编码器)正在将RTP流发送到192.168.0.20:2000。发送方端srt-live-transmit接收包括端口2000上的RTP报头在内的MPEG-TS流并侦听端口1000上的传入接收方连接。在我们的示例中,运行发送方应用程序的计算机的IP地址为192.168.0.10。不同机器上的接收器应用程序作为呼叫者连接到服务器,接收SRT流并将该流作为UDP数据输出到IP地址为192.168.0.30和端口3000的RTP接收器(例如解码器)。
注意:使用SRT 1.4版时,在使用srt-live-transmit时不再需要指定有效负载和/或块大小(-c)。
类似地,具有FEC(SMPTE 2022-1前向纠错)的冗余RTP可以通过SRT连接进行隧道传输。FEC列和行数据包的额外UDP流可以通过两个额外的SRT连接进行路由。但是,所有三个SRT连接都可以通过使用SRT复用在单个UDP端口上发送,SRT复用是核心协议的一部分。

使用SRT复用通过SRT与FEC隧道传输RTP

我们可以进一步扩展此设置以支持冗余RTP(SMPTE 2022-7)工作流程。由于RTP报头在冗余设置的任一路径上保持不变,因此系统仍可在接收器侧同步多个RTP流。

通过SRT隧道传输多路径RTP以实现冗余

此时,值得一提的是,在IBC2019时间范围内,本机冗余工作流程将进入SRT协议。这意味着每个启用SRT的端点都可以使用此功能从而大大简化了安装。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LiveVideoStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 许多企业现有的内部部署广播工作流程都基于RTP协议,但是您是否知道SRT可以通过在不可靠的网络(例如公共网络)上利用SRT隧道传输RTP来扩展这些工作流程的范围?
  • 在这篇文章中,我们将以一个非常简单的端到端工作流为例向您展示这一过程。下图显示了如何使用RTP将MPEG2传输流从视频编码器发送到受保护网络(例如企业LAN或MPLS租用线路)内的视频解码器。
  • 通过可靠网络(例如局域网)进行RTP传输
    • 用公共互联网取代专用网络并不是那么简单,因为不可靠的网络会引入数据包丢失和抖动。此外,流在离开或进入企业网络时必须穿过防火墙。这期间内容不再受到保护,非常容易被暴露。
    • RTP通过不可靠的网络传输,如公共互联网
      • SRT能够恢复丢失的数据包,也能加密内容和遍历防火墙,这使其非常适合用作跨公共互联网的隧道。
        • 以下是它的工作原理:
          • RTP流量被发送到UDP接收器,UDP接收器通过SRT连接转发包括RTP报头在内的MPEG-TS有效载荷;而在接收器端,流作为UDP播放,但由于RTP报头仍然存在,因此它会将本地RTP流发送到现有的RTP解码器。
          • 通过SRT在不可靠的网络(例如公共互联网)上隧道传输RTP
            • 可以使用开源SRT包中的srt-live-transmit示例应用程序来评估此配置。来自编码器的源RTP流必须指向SRT发送器的UDP输入并将目标位置处接收器的UDP输出发送到解码器的RTP输入端口。
              • 由于应用程序在从UDP读取数据时期望没有RTP头的MPEG-TS流量,因此默认情况下,它被配置成为每UDP包接收1316字节(7个MPEG-TS帧)的有效载荷。该命令行选项用于增加SRT有效负载大小。
                • 这些是发送方(UDP到SRT)和接收方(SRT到UDP)的两个srt-live-transmit示例命令行:
                  • 在该示例中,源(例如RTP编码器)正在将RTP流发送到192.168.0.20:2000。发送方端srt-live-transmit接收包括端口2000上的RTP报头在内的MPEG-TS流并侦听端口1000上的传入接收方连接。在我们的示例中,运行发送方应用程序的计算机的IP地址为192.168.0.10。不同机器上的接收器应用程序作为呼叫者连接到服务器,接收SRT流并将该流作为UDP数据输出到IP地址为192.168.0.30和端口3000的RTP接收器(例如解码器)。
                    • 注意:使用SRT 1.4版时,在使用srt-live-transmit时不再需要指定有效负载和/或块大小(-c)。
                      • 类似地,具有FEC(SMPTE 2022-1前向纠错)的冗余RTP可以通过SRT连接进行隧道传输。FEC列和行数据包的额外UDP流可以通过两个额外的SRT连接进行路由。但是,所有三个SRT连接都可以通过使用SRT复用在单个UDP端口上发送,SRT复用是核心协议的一部分。
                      • 使用SRT复用通过SRT与FEC隧道传输RTP
                        • 我们可以进一步扩展此设置以支持冗余RTP(SMPTE 2022-7)工作流程。由于RTP报头在冗余设置的任一路径上保持不变,因此系统仍可在接收器侧同步多个RTP流。
                        • 通过SRT隧道传输多路径RTP以实现冗余
                          • 此时,值得一提的是,在IBC2019时间范围内,本机冗余工作流程将进入SRT协议。这意味着每个启用SRT的端点都可以使用此功能从而大大简化了安装。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档