SRT互联网传输设备技术分享

SRT互联网传输设备技术分享


前 言

写这篇文章的初衷,是想把自己在使用SRT设备过程中的经验和想法分享给公司同事和一些用户。因为SRT对一些人来讲,还比较陌生,如果能够通过一篇文章,把简单的基础知识分享给大家,既能增加对SRT的理解,也可以了解SRT的简单原理,这样在工作中,无论是在搭建传输系统时,还是在使用设备的过程中,都能够游刃有余的解决问题;同时,如果要将这些知识清晰的梳理出来,对我自己也是一次系统学习SRT知识的机会,于公于私,这都是一件值得去做的事。

当然,SRT Alliance提供了相应的指导文档《SRT Deployment Guide, v1.1, Issue 01》,我也是从这份文档开始学习起来的,但是截至到写这篇文章为止,我还没有看到相应的中文版本,这对于一部分国内的用户来说使用起来就会不太方便。

于是,当这两件事同时出现的时候,我写这篇文档的思路也就逐渐清晰了:依托于SRT Alliance这篇指导文档的内容以及逻辑结构,同时加入我自己的思考和想法,再通过高骏SRT设备作为操作界面呈现出来,最终形成一篇中文版本的技术分享文档。

在这篇文章中,我大量借鉴了《SRT Deployment Guide, v1.1, Issue 01》的内容,很多语句都是我将原文翻译过来的,所以难免会有翻译不准、措辞不当的地方;同时,在文中会涉及传输协议、传输纠错机制、防火墙等一些专业知识,其中大多是我通过自学的途径来掌握的,没办法做到准确无误。所以如果有各方面的专业人士发现了我在翻译、描述中的错误,非常希望您能帮我指出问题,我将感激不尽,您可以通过我的个人邮箱联系到我:lzrfighting@hotmail.com。

原本为了让这篇文章更好的散播出去,我是将它分成四部分在高骏公司的微信公众号上连载发布的,但是弊端就是在推送时间之后,不方便大家再去查找相关的内容,所以这次主要是将原来的连载文章合并起来,并进行必要的修正,形成完整版的文档,分享给大家。

如果您对SRT Alliance的原文文档感兴趣,可以从以下链接中下载阅读,本文参考、涉及的文档包括:
《SRT Deployment Guide, v1.1, Issue 01》下载链接:www3.haivision.com/srt-alliance-guide
《Haivision SRT Open Source White Paper》下载链接:www3.haivision.com/srt-open-source-wp

最后,感谢以往教会我各种知识和技能的师傅、领导、同事、同学和朋友,你们给予我的每一点知识对我来说都非常重要!也感谢SRT Alliance给我们提供如此强大的技术以及相关的指导文档,使我们有机会在工作和生活中学习、应用到SRT技术,也希望你们不断壮大,给所有的使用者带来更多的便利。


序 言

传统的IP编解码器大多直接使用UDP等不可靠传输协议直接进行传输,无法解决公网环境下的抖动与丢包问题,因此,这类编解码器方案无法直接应用于普通互联网传输的场景。

而高骏(北京)科技有限公司推出的使用SRT可靠传输技术的编解码器和媒体网关产品,可成功实现在普通互联网环境下、多地之间,安全可靠的高清视频传输、分发功能。

那么,如此方便好用的功能究竟是如何实现的呢?

为了让大家对SRT传输设备有更深入的了解,将这些看似深奥、复杂的技术和产品变得平易近人,我特意写了这篇文档,与大家分享和讨论SRT技术以及高骏互联网传输设备。文章将分为四部分:什么是SRT,SRT协议解析,实际使用场景和配置SRT传输参数,文章思路由浅入深,由理论到应用,尽可能地将SRT协议清晰地介绍给每一个阅读这篇文章的朋友,希望大家能够从中有所收获。


Chapter 1. 什么是SRT?

1.1. SRT 联盟

想了解SRT技术,我们可以从SRT联盟说起,这是一个由Haivision和Wowza合作成立的,致力于管理和支持SRT协议开源应用的组织,这个组织致力于促进视频流解决方案的互通性,以及推动视频产业先驱协作前进,实现低延时网络视频传输。

1.2. SRT传输技术

SRT(Secure Reliable Transport)是一种能够在复杂网络环境下实时、准确地传输数据流的网络传输技术,它在传输层使用UDP协议,虽然UDP协议是一种不可靠传输协议,但是凭借SRT强大的数据恢复能力,再加上UDP协议自身速度快、开销低的特点,最终实现了SRT安全、稳定、快速的传输效果。
SRT Open Source官方logo
图1-2 SRT Open Source官方logo
(图片来自SRT Alliance白皮书《Haivision SRT Open Source White Paper》)

SRT是一种面向连接的点对点协议,每一路SRT流仅需一个UDP连接,其中除了一路要传输的数据流外,还包含了双向的控制信息。
SRT
协议的特点有如其名字:通过加密保证传输内容的安全;在严重丢包的情况下可靠地恢复数据流;动态适应时刻变化地网络情况传输数据。

得力于其可靠的传输质量和极低的传输延时,SRT技术被广泛应用于视频流传输领域。

在音视频流从SRT源设备(如下图中编码器)传输到SRT目标设备(如下图中解码器)的过程中,SRT会实时地检测和适应两台设备间不断变化的网络状态,抵抗由于网络拥塞而导致的带宽抖动,凭借其强大的错误恢复机制,将网络丢包的可能性降到最低。同时SRT还可以进行AES加密,从而确保数据在传输过程中的信息安全。
SRT技术的典型传输方式
图1-3 SRT技术的典型传输方式
*注: 文章中将分别以蓝、黄两种颜色强调SRT源设备和SRT目标设备,方便大家理解描述语句。

1.3. SRT的典型应用模式

由于SRT技术安全、可靠、快速的特点,它可以适应各种各样的使用需求。而且,有SRT协议的存在,即使你不掌握复杂的IP路由和交换知识,也可以快速地建立起视频传输通道,完成视频传输任务。

这里,我简单列出几个最典型的应用模式:

1.3.1. 点对点单向传输和视频互动

SRT最简单的应用方式,就是在两点之间进行视频传输工作,比如进行单向视频传输,将视频从A地传输到B地;或者两地互传,实现两地间的双向视频互动。
点对点单向视频传输
图1-4 点对点单向视频传输
点对点双向视频互动
图1-5 点对点双向视频互动
*注:
1. HDE-650S:SRT互联网传输编码器,支持4:2:2编码;
2. HDD-461:SRT互联网传输解码器;
3. 两台设备搭配使用最低支持40ms超低编解码延时。

这里对HDE-650S和HDD-461先做一个简要的介绍,它们是专业的视频编解码设备,分别可以输入和输出多种基带信号格式,支持ASI、UDP和SRT等多种码流格式的输出、输入,支持4:2:2编码,编解码延时最低可达40ms,是理想的编解码解决方案。
HDE-650S和HDD-461的输入与输出
图1-6 HDE-650S和HDD-461的输入与输出

1.3.2. 点对多点传输

通过使用高骏SMH媒体网关,可以将一个编码器发出地视频流,分发给多个解码器,以SMH媒体网关为中心节点,先接收编码器发出地视频流,再将其复制、分发给多个解码器,从而实现点到多点的视频传输。
点对多点视频传输
图1-7 点对多点视频传输
*注:
SMH:SRT媒体网关。在这里,SMH媒体网关既是SRT目标设备,接收来自编码器HDE-650S的视频流;同时也是SRT源设备,将视频流发送给多个解码器HDD-461。

1.3.3. 视频流协议转换与分发

凭借媒体网关设备,可以实现SRT、TS over UDP、RTMP PULL/PUSH等多种视频流协议的输入与输出,并对各路视频流进行复制、转换、分发等工作,这大大增加SRT系统的兼容性,使本地TS over UDP和RTMP流能够顺利融入SRT系统,提高视频转发的灵活性。
通过SMH媒体网关完成视频流协议的转换与分发
图1-8 通过SMH媒体网关完成视频流协议的转换与分发


Chapter 2. SRT协议解析

为了让各位对SRT有更深入的了解,下面让我们一起来看看SRT是如何工作的。

2.1. SRT工作原理

要说SRT的工作原理,我们先从其纠错机制说起。

下图描述了在数据包传输过程中,不使用数据纠错,使用FEC(Forward Error Correction)纠错,和使用ARQ(Automatic Repeat request)纠错三种链路传输纠错方式的模式和结果。

如果没有数据纠错,结果自不必说,一旦发生丢包,得到的就是不完整的数据流,如下图。
数据包传输时没有纠错机制
图2-1 数据包传输时没有纠错机制
(图片来自SRT Alliance白皮书《Haivision SRT Open Source White Paper》)

如果使用FEC纠错,则会在传输的数据流中加入一定比例的前向纠错数据,当发生丢包时,接收端就可以根据前向纠错数据,恢复丢掉的数据包,如下图。

但是使用FEC就必须面对这样的问题:无论是否产生丢包,前向纠错数据都需要占用一定的传输带宽;而且当丢包率超过前向纠错数据能够恢复的阈值时,FEC将无法恢复丢失的数据包。
数据包传输时使用FEC纠错
图2-2 数据包传输时使用FEC纠错
(图片来自SRT Alliance白皮书《Haivision SRT Open Source White Paper》)

如果使用ARQ纠错,就需要在发送端和接收端之间建立双向连接。在接收端收到数据包后,会按照数据包的顺序进行排序(传输过程中数据包可能会发生乱序),如果发现其中有丢失的数据包,就会向发送端发出重传请求,由发送端将丢失的数据包重新发送到接收端,从而实现数据包的恢复,如下图。

数据包传输时使用ARQ纠错
图2-3 数据包传输时使用ARQ纠错
(图片来自SRT Alliance白皮书《Haivision SRT Open Source White Paper》)

而我们说的SRT技术,正是使用的ARQ纠错机制,这主要是因为在网络传输时,带宽抖动和丢包通常都是随机发生的,只有在网络出现问题的时候才需要纠错机制的介入,只需要在发生丢包之后让发送端重传丢失的数据包就可以了,这样既保证了传输的质量,同时又能减少无谓地消耗传输带宽;除此之外,SRT会为数据包提供更精准的时间戳,让接收端能够准确校准媒体流的包顺序,保证传输正常。

之前已经说过,SRT协议依靠双向传输的UDP流来保证公网环境下的视频传输质量。除了从SRT源设备到SRT目标设备持续发送视频数据外,在两台设备之间还会持续地交换SRT控制信息,以此来在两台设备之间实现以UDP为底层协议的连接,进行信息交互,确保视频数据能够准确地传输到接收端。
SRT连接中的双向UDP流
图2-4 SRT连接中的双向UDP流
*注:
1. SRT源设备发送的UDP流包含数据业务流和SRT控制信息;
2. SRT目标设备接收源设备发来的UDP流,同时回复相应的SRT控制信息。

为了让SRT保持连接状态,必须确保控制信息数据包的发送间隔不超过10ms。每当SRT目标设备收到一个数据包后,都会回复一个“ACK”确认控制信息数据包,告诉SRT源设备已经收到这个数据包了,如果在10ms内收到多个数据包,则只回复一个“ACK”,确认这期间收到的所有数据包;然而,数据包的到达时间间隔难免会超过10ms,这时就需要增加“keep alive”控制信息数据包,确保SRT连接不会断开。

在SRT连接中,从目标设备返回源设备的控制信息通道也会占用一定的带宽。在业务数据完全正常传输的情况下(即没有错误信息需要返回到发送端),控制信息占用带宽大约为40Kbps;传输时丢失的数据包越多,目标设备发出的控制信息就越多,信息量会与丢包率线性相关,每丢失1个数据包,大约会消耗400bps的可用带宽。

2.2. SRT握手模式

现在我们已经知道SRT的工作原理了,那么一个SRT连接又是如何建立的呢?要清楚这个问题,我们就不得不了解SRT握手模式:Caller & Listener和Rendezvous。

在讨论建立SRT连接时,我们不需要

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值