本文镜像:https://www.linkpi.cn/archives/1027
本文链接:https://blog.csdn.net/weixin_45326556/article/details/106618746

编码器SRT协议三种模式listener, caller, rendezvous简介

  • 1. 背景
  • 2. SRT的三种握手模式
  • 2.1 握手模式简介
  • 2.2 listener模式
  • 2.2.1 编码器配置为listener模式发送
  • 2.2.2 vMix配置为caller模式来接收
  • 2.2.3 OBS配置为caller模式来接收
  • 2.3 caller模式
  • 2.3.1 编码器配置为caller模式发送
  • 2.3.2 vMix配置为listener模式来接收
  • 2.3.3 OBS配置为listener模式来接收
  • 2.4 rendezvous模式
  • 2.4.1 编码器配置为rendezvous模式发送
  • 2.4.2 vMix配置为rendezvous模式来接收
  • 2.4.3 OBS配置为rendezvous模式来接收
  • 2.5 编码器如何推流给SRT LIVE SERVER(SLS)
  • 2.5.1 SLS简介
  • 2.5.2 编码器推流方法之一
  • 2.5.3 编码器推流方法之二
  • 2.5.4 如何播放编码器推到SLS的流
  • 2.5.4.1 vMix播放
  • 2.5.4.2 OBS播放

1. 背景

    SRT是Secure Reliable Transport的简称。这个视频传输协议可以在具有挑战性的网络之下进行直播。
    SRT是一个开源低延迟视频传输协议。它拥有三大特点,安全,可靠,低延迟。安全方面,SRT支持AES加密,保障端到端的视频传输安全。可靠性方面,SRT通过前向纠正技术(FEC)保证传输的稳定性。低延迟方面,由于SRT建立在改进型的UDT协议之上,解决了UDT协议传输延迟高的问题,又解决了UDP网络通信复杂的传输时序问题,可以做到支持高吞吐量文件和超清视频的实时传输。
    在一般人眼里,RTMP是互联网直播视频的事实标准。但RTMP协议已经很久没有更新了,该标准在2012年最后一次更新过后就被放弃了。RTMP标准没有支持新的Codec诸如HEVCAV1。导致各个厂家各自为战,无法互通,这就是为什么VLC等常见的播放都无法播放H265RTMP流的原因。现在SRT联盟有超过250家企业和组织,受到VLCGSTREAMER, FFMPEG, OBS, VIMX等的支持,可以预见的未来,SRT必将取代RTMP
    SRT开源代码请参见https://github.com/Haivision/srt

2. SRT的三种握手模式

2.1 握手模式简介

为了建立通信流,SRT采用了一种握手机制,其中每个设备将自己标识为callerlistener。在某些情况下,两个设备可以同时在所谓的rendezvous模式下协商SRT会话。如您在配置SRT流时,应该了解这些握手模式:

SRT模式 它能做什么
caller 目标设备设置为SRT流会话的发起方。
caller设备必须知道listener的IP地址以及其侦听器的端口号
listener 设置设备以等待请求开始SRT流会话。
listener设备只需要知道它应该在特定端口上侦听SRT流
Rendezvous 允许两个设备用同一个端口去启动SRT会话,
源和目标都必须都是rendezvous模式。


如上图一所示,当编码器设置为listener模式,可以允许多个接收端(或者解码器)来接收该SRT流;如上图二所示,当编码器设置为caller模式,则编码器只能发送SRT流给一个接收端(或者解码器);如上图三所示,当编码器设置为Rendezvous模式,则编码器只能发送SRT流给一个接收端(或者解码器),这个模式的设计目标是无需端口映射就能做NAT穿透,要求编码器和解码器都使用同一个端口,而且双方都必须都设为rendezvous模式;rendezvous模式的设计初衷是无需NAT/防火墙网络管理员干预,就能实现两个在不同的NAT内的编码器和解码器通信,但由于网络的复杂性,导致出现理想很丰满,现实很骨感的尴尬境地;尤其在国内,各种NAT嵌套,我们上网用的路由器连个公网IP都没有,大都是各运营商的内网IP,内网穿透的基本条件都不存在。

2.2 listener模式

2.2.1 编码器配置为listener模式发送

如下图所示,登录编码器后台,选择输出设置–>SRT设置–>填写SRT listener参数–>保存。SRT listener参数:
模式: 从列表框中选择listener。
IP: 127.0.0.1。
端口: SRT listener模式的监听端口,这个端口要告诉接收端/解码端,本例子用9001。
延迟: 控制缓冲的参数,单位为毫秒,默认为50。

2.2.2 vMix配置为caller模式来接收

编码器按2.2.1设置好以后,就可以用vMix来接收了,假设编码器的IP地址为192.168.1.217,vMix的配置如下图所示:

在如上图右上角第2步输入框里输入SRT参数:
码流类型: SRT(caller);由于编码器设置成了listener模式,因此vMix必须设为caller模式。
Hostname: 输入编码器的IP地址,本例子编码器的IP为192.168.1.217,则该输入框就输入192.168.1.217
Port: 输入编码器配置的SRT listener监听的端口,本例为9001。
延迟: SRT缓冲,单位为毫秒,可以与编码器的SRT延迟参数不同。

2.2.3 OBS配置为caller模式来接收

编码器按2.2.1设置好以后,就可以用OBS来接收了,假设编码器的IP地址为192.168.1.217,OBS的配置如下图所示:

与vMix不同,OBS要接收编码器SRT流只能用URL地址,URL格式为:srt://编码器IP:SRT监听端口?mode=caller&latency=ms;根据2.2.1编码器的配置,我们要输入的URL为srt://192.168.1.217:9001?mode=caller&latency=50

2.3 caller模式

2.3.1 编码器配置为caller模式发送

如下图所示,登录编码器后台,选择输出设置–>SRT设置–>填写SRT caller参数–>保存。SRT caller参数:
模式: 从列表框中选择caller。
IP: 接收端/解码端的IP地址,本例的接收端IP为192.168.1.195,因此填入192.168.1.195
端口: 接收端/解码端的SRT listener监听端口。本例子使用9001。
延迟: 控制缓冲的参数,单位为毫秒,默认为50。

2.3.2 vMix配置为listener模式来接收

编码器按2.3.1设置好以后,就可以用vMix来接收了。若已经启动2.3.3的OBS,要先停止OBS。vMix的配置如下图所示:

在如上图右上角第2步输入框里输入SRT参数:
码流类型: SRT(listener);由于编码器设置成了caller模式,因此vMix必须设为listener模式。
Port: 输入SRT listener监听的端口,这个端口要跟编码器的caller端口一样。

2.3.3 OBS配置为listener模式来接收

编码器按2.3.1设置好以后,就可以用OBS来接收了。若已经启动2.3.2的vMix,要先停止vMix。OBS的配置如下图所示:

与vMix不同,OBS要接收编码器SRT流只能用URL地址,URL格式为:srt://127.0.0.1:SRT监听端口?mode=listener&latency=ms;根据2.3.1编码器的配置,我们要输入的URL为srt://127.0.0.1:9001?mode=listener&latency=50

2.4 rendezvous模式

2.4.1 编码器配置为rendezvous模式发送

如下图所示,登录编码器后台,选择输出设置–>SRT设置–>填写SRT rendezvous参数–>保存。SRT rendezvous参数:
模式: 从列表框中选择rendezvous。
IP: 接收端/解码端的NAT公网IP地址。本例是121.8.34.9
端口: SRT rendezvous端口,这个端口必须与接收端/解码端的SRT rendezvous端口相同,本例子是9001。
延迟: 控制缓冲的参数,单位为毫秒,默认为50。

2.4.2 vMix配置为rendezvous模式来接收

编码器按2.4.1设置好以后,就可以用vMix来接收了。若已经启动2.4.3的OBS,要先停止OBS。假设编码器的NAT公网IP地址为113.119.199.52,vMix的配置如下图所示:

在如上图右上角第2步输入框里输入SRT参数:
码流类型: SRT(Rendezvous);由于编码器设置成了Rendezvous模式,因此vMix必须设为Rendezvous模式。
Hostname: 输入编码器NAT公网的IP地址,假设编码器的IP为113.119.199.52,则该输入框就输入113.119.199.52
Port: SRT rendezvous端口,这个端口必须与编码器的SRT rendezvous端口相同,本例子是9001。

2.4.3 OBS配置为rendezvous模式来接收

编码器按2.4.1设置好以后,就可以用OBS来接收了。若已经启动2.4.2的vMix,要先停止vMix。假设编码器的NAT公网IP地址为113.119.199.52,OBS的配置如下图所示:

与vMix不同,OBS要接收编码器SRT流只能用URL地址,URL格式为:srt://编码器NAT公网IP:SRT监听端口?mode=rendezvous&latency=ms;根据2.4.1编码器的配置,我们要输入的URL为srt://113.119.199.52:9001?mode=listener&latency=50

2.5 编码器如何推流给SRT LIVE SERVER(SLS)

2.5.1 SLS简介

srt-live-server(SLS)是基于安全可靠传输(SRT)的低延迟开放源代码实时流服务器。 通常,SLS在互联网中传输的延迟小于1秒。源代码参见https://github.com/Edward-Wu/srt-live-server。
编译SLS相对简单,照说明去做就可以了,有一点要注意的是SLS依赖SRT,所以要先编译SRT,然后在编译SLS。编译好以后运行,出现如下的界面:

2.5.2 编码器推流方法之一

本公司的编码器推流有2个方法,一个是多平台推流,一个是通道输出设置,下面是多平台推流的方法。SLS的推流地址格式为:srt://[your.sls.ip]:8080?streamid=uplive.sls.com/live/test。假设SLS服务器的IP地址是192.168.1.122,则推流地址为:srt://192.168.1.122:8080?streamid=uplive.sls.com/live/test。如下图所示:

注意: 推流的streamid和播放用的streamid是不同的,详细参见sls.conf说明。

2.5.3 编码器推流方法之二

本公司的编码器推流有2个方法,一个是多平台推流,一个是通道输出设置,下面是输出设置的方法。推流的URL参见2.5.2说明。如下图所示:

2.5.4 如何播放编码器推到SLS的流

2.5.4.1 vMix播放

vMix播放SLS流是caller模式,假设sls服务器的IP是192.168.1.122,端口为8080,则vMix配置如下图所示:

注意: 推流的streamid和播放用的streamid是不同的,详细参见sls.conf说明。

2.5.4.2 OBS播放

OBS播放SLS流是caller模式,假设sls服务器的IP是192.168.1.122,端口为8080,则OBS配置如下图所示:

注意: 推流的streamid和播放用的streamid是不同的,详细参见sls.conf说明。

编码器SRT协议三种模式(listener, caller, rendezvous)简介相关推荐

  1. vtp协议服务器配置,Cisco思科交换机VTP协议三种模式区别?

    摘要: VLAN中继协议,VTP,VLAN TRUNKING PROTOCOL,是CISCO专用协议,大多数交换机都支持该协议.VTP负责在VTP域内同步VLAN信息,这样就不必在每个交换上配置相同的 ...

  2. SAP EWM 与 AGV 机器人对接的三种模式

    SAP EWM 与 AGV 机器人对接的三种模式 https://mp.weixin.qq.com/s/xGfUMSBTEMYKce5oXcWDqA 导读    本文转载自:弘毅供应链,跟随供应链专家 ...

  3. Tomcat三种模式及配置APR模式

    为什么80%的码农都做不了架构师?>>>    Tomcat三种模式 Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下: 这三种模式的不同之处如 ...

  4. oracle物理DG管理-redo数据传输,应用与三种模式

    环境http://blog.csdn.net/sunziyue/article/details/50799648基础之上 1学习配置参数 下列参数为primary 角色相关 *.db_name='or ...

  5. LVS三种模式的区别及负载均衡算法

    转载自  LVS三种模式的区别及负载均衡算法 LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统,由章文嵩博士在1998年5月成立,在li ...

  6. Tomcat运行三种模式:http-bio|http-nio|http-apr介绍

    转自<tomcat运行三种模式:http-bio|http-nio|http-apr介绍> Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一.不过,许多 ...

  7. DDD分层架构的三种模式

    本文来说下DDD分层架构的三种模式 文章目录 概述 DDD 分层架构 模式一:四层架构 模式二:五层架构 模式三:六边形架构 本文小结 概述 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和 ...

  8. 关于oracle的物理dg,oracle物理DG管理-redo数据传输,应用与三种模式

    环境http://blog.csdn.net/sunziyue/article/details/50799648基础之上 1学习配置参数 下列参数为primary 角色相关 *.db_name='or ...

  9. 还在搞三层架构?了解下 DDD 分层架构的三种模式吧 !

    来源:jianshu.com/p/a775836c7e25 引言 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识. DDD DDD(Domain DrivenDesign ...

最新文章

  1. R可视化绘制t分布(t Distribution)
  2. 怎么添加设置微信定位服务器,微信的定位怎么添加
  3. 【AI-1000问】为什么现在大家喜欢用3*3小卷积?
  4. 降低能耗 企业级闪存进入数据中心领域
  5. 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 如果客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置 文件内容的对象,则在系统运行中,有 很多地方都需
  6. fenby C语言 P30
  7. Spring AOP中的前置通知和后置通知详解
  8. 项目管理图书泄露章节-----关于项目内容中的其他
  9. LeetCode(27)——移除元素(JavaScript)
  10. 中兴侵权案败诉需赔 2.89 亿元;HTC 裁员 1500 人;Android P Beta 3 发布 | CSDN 极客头条...
  11. 使用css样式设计一个简单的html登陆界面
  12. select完还没释放可以执行其他sql语句吗
  13. CRM - 用户管理
  14. opencv打开图片显示全灰色
  15. 通过nginx搭建一个基于http-flv的直播流媒体服务器
  16. 《posix多线程编程》笔记(四)
  17. 6. 中学生心理辅导
  18. 区块链究竟是如何工作的?
  19. Codeforces 371 A,B,C
  20. CSC7715 同步整流

热门文章

  1. Macbook Tools
  2. 计算机蜂鸣无法开机,计算机开机后会时常出现3声蜂鸣是什么原因
  3. 骑行318、 2016.7.15
  4. 解决intellij IDEA设置浏览器路径之后重启失效的问题
  5. automake 框架_centos 配置go-mrico框架
  6. 开关电源正负极两端加104电容的作用是什么?
  7. HTML5期末大作业:漫画网站设计——海贼王基地(5页) 学生动漫网页设计模板下载 海贼王大学生HTML网页制作作品 简单漫画网页设计成品 dreamweaver学生网站模板
  8. php jquery ajax九宫格抽奖,jQuery九宫格抽奖
  9. virtualbox与windows共享文件夹
  10. html控制台 打印 consol,浏览器console.log()打印输出台不显示输出内容……