• SRT简介


    1.简介

    ​ SRT代表安全可靠传输协议,由Haivision开发。这是一个由SRT联盟推广的开源协议,旨在提供安全、高质量、低延迟的视频流传输。该协议针对不可预测的网络,如公共互联网进行了优化。在广播和流媒体行业中,保持高质量的视频和低延迟至关重要。SRT协议旨在适应不断变化的网络条件并提供优质的结果。

    ​ SRT(Secure Reliable Transport,安全可靠传输)是一种用于超低(亚秒)延迟的实时音视频流及通用批量数据传输的传输协议。SRT基于UDT协议,Haivision和Wowza合作成立了SRT联盟。SRT解决了复杂的传输时序问题,可以做到支持高吞吐量文件和超清视频的实时传输。SRT是一种开源技术,其代码https://github.com/Haivision/srt。

    2.特性

    2.1.质量和高靠性

    ​ 无论您的网络多么不可靠,SRT都可以从严重的数据包丢失和抖动中恢复,确保视频流的完整性和质量。

    2.2.低延迟

    ​ 为了适应用户的各种部署环境,因此SRT的流错误纠正策略是可配置的。由于SRT建立在UDP协议之上,解决了TCP协议传输延迟高的问题。

    2.3.内容不敏感

    ​ SRT在网络传输层运行,它可以传输任何类型的视频格式、编解码器、分辨率或帧速率。

    2.4.使用交会模式轻松穿越防火墙

    ​ SRT使用的握手过程支持出站连接,也就是只需要直到双方的公网IP地址,无需在防火墙中打开端口映射。

    ​ 另外,使用直接从源到目的地的连接,SRT可以减少延迟,消除中心瓶颈,并降低网络成本。

    ​ **编者备注原理:**双方发送源和目的端口完全一致,达到欺骗防火墙通过的目的,从而建立连接。存在如果在网络传输过程中端口被转换,无法连接的问题。

    2.5.AES加密

    ​ SRT使用世界各地政府和组织信任的128/192/256位AES加密,确保有价值的内容得到端到端的保护,不会被分发。

    2.6.前向纠错(FEC)和包过滤器API

    ​ 包过滤器AP允许在发送网络数据包之前,在发送方对其进行自定义处理,并允许在从网络接收到网络数据包之后在接收方对其进行定制处理。

    ​ 用户可以以任何方式操作生成的数据包过滤器数据,例如用于自定义加密、数据包检查或在数据发送之前访问数据。

    ​ 创建的第一个插件是前向纠错(FEC),在某些使用情况下,它可以提供比自动重复请求(ARQ)稍低的延迟。此插件允许三种不同的模式:
    ​ 仅ARQ 重传丢失的数据包
    ​ 仅FEC 提供接收机侧FEC恢复所需的开销
    ​ FEC和ARQ 重新传输FEC无法恢复的丢失数据包

    2.7.无缝连接

    ​ 与管理网络SMPTE-2022-7类似,连接键合为SRT协议添加了无缝流保护和故障切换。该技术依赖于多个IP网络路径,以防止网络拥塞或中断导致实时视频流的故障中断,从而保持服务的连续性。

    ​ 该功能通过使用SRT v1.5中引入的套接字组来实现的。套接字组包含多个套接字,当正在使用的套接字发送一个故障信号后,组内其他套接字将接管它的操作。

    目前支持两种模式:

    ​ 广播模式–在广播模式下,数据通过组中的所有成员链接冗余发送。如果其中一条链路出现故障或经历网络抖动和/或数据包丢失,则将通过组中的另一条链路接收丢失的数据。冗余分组在接收机侧被简单地丢弃。
    ​ 主/备模式–在主/备份模式下,一次仅使用一条(主)链路进行数据传输,而其他(备份)连接处于备用状态,以确保主链路出现故障时传输将继续。主/备份模式的目标是在可能的链路中断发生之前识别它,从而提供一个时间窗口,在该时间窗口内无缝切换到其中一个备份链路。

    2.8.访问控制(流ID)

    ​ 当需要向单个IP地址和UDP端口推送/拉取多个SRT流,使用流ID来区分本次推流/拉取的行为。

    3.与常见传输格式比较:

    目前互联网上的视频直播有两种:

    ​ 一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTP+FLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了对交互要求不高的场景;

    ​ 另一种是WebRTC协议的直播,这种直播方式使用UDP的协议进行流媒体的分发,直播延时小于1秒,同时连接数一般小于10个,主要应用在视频通话、秀场连麦等应用场景。

    ​ 除了上述两种场景外,还有一种视频直播的场景,就是同时要求低延时和大并发的场景,比如赛事直播、股票信息同步、大班教育等。SRT可以很好地满足上述场景的要求。

    SRT与目前市场上的大多数其他视频流传输格式(如RTMP、HLS和MPEG-DASH)。相比有几个特点:

    • SRT是一个开源解决方案,已经集成到多个平台和体系结构中,包括基于硬件的可移植解决方案和基于软件的云解决方案。
    • SRT可以在几毫秒到几秒的延时之间的连接上很好地工作。能处理长时间的网络延迟。
    • RT与负载无关。任何类型的视频或音频媒体,或者实际上任何可以使用UDP发送的其他数据元素,都与SRT兼容。支持多种流类型。
    • SRT发送支持多个并发流,多个不同的媒体流例如多个摄像机角度或可选音频轨道,可以通过在一个点对点链接上共享相同UDP端口和地址的并行SRT流发送。
    • SRT使用的握手过程支持出站连接,而不需要在防火墙中打开危险的永久外部端口,从而维护公司安全策略。增强防火墙遍历。
    • SRT端点建立了稳定的端到端延迟概要,消除了下游设备需要有自己的缓冲区来应对不断变化的信号延迟。信号时间准确。
  • 相关阅读:
    Java / Android 线程间通信
    # 智慧社区管理系统-核心信息管理-02物业收费管理
    【单片机基础】按键状态机实现短按、长按、双击、三击和N击
    【MQTT基础篇(七)】MQTT主题
    [python]如何操作Outlook实现邮件自动化
    深入理解关键字 一(auto,register,static,sizeof)
    c#如何判断一个类型是否为数值类型,请给出通用方法
    面试面经|Java面试mybatis面试题
    C++标准模板(STL)- 类型支持 (类型修改,从给定类型移除 const 或/与 volatile 限定符,std::remove_cv)
    (10)学习笔记:动手深度学习(模型选择 + 过拟合和欠拟合)
  • 原文地址:https://blog.csdn.net/weixin_35804181/article/details/127560104