小白篇之ENC编码器的SRT协议多平台推流配置

  • 编码器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播放

最近有客户问我ENC编码器如何配置SRT协议直播推流,下面我就来介绍一下这款编码器如何配置SRT推流直播,如果您还没有ENC设备,请进入如下地址:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22796185904.4.5f005504oCprdh&id=618201308044

ENC编码器的强大之处我就不多说了,从以上链接,大家可以知道它采用了华为的海思芯片,相对于其他芯片,他的视频处理延时的优势不言而喻,是业内延时说他排第二,没人敢排第一,哈哈,可能有点夸大了。不过真的很厉害的样子就对了。

好了,废话不多说,下面开始介绍SRT的配置。

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

1. 背景

SRTSecure Reliable Transport的简称。这个视频传输协议可以在具有挑战性的网络之下进行直播。
    SRT是一个开源低延迟视频传输协议。它拥有三大特点,安全,可靠,低延迟。安全方面,SRT支持AES加密,保障端到端的视频传输安全。可靠性方面,SRT通过前向纠正技术(FEC)保证传输的稳定性。低延迟方面,由于SRT建立在改进型的UDT协议之上,解决了UDT协议传输延迟高的问题,又解决了UDP网络通信复杂的传输时序问题,可以做到支持高吞吐量文件和超清视频的实时传输。
    在一般人眼里,RTMP是互联网直播视频的事实标准。但RTMP协议已经很久没有更新了,该标准在2012年最后一次更新过后就被放弃了。RTMP标准没有支持新的Codec诸如HEVCAV1。导致各个厂家各自为战,无法互通,这就是为什么VLC等常见的播放都无法播放H265RTMP流的原因。现在SRT联盟有超过250家企业和组织,受到VLC, GSTREAMER, 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流会话。设备只需要知道它应该在特定端口上侦听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.217vMix的配置如下图所示:

在如上图右上角第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.217OBS的配置如下图所示:

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,要先停止OBSvMix的配置如下图所示:

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

2.3.3 OBS配置为listener模式来接收

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

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.52vMix的配置如下图所示:

在如上图右上角第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.52OBS的配置如下图所示:

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说明。
————————————————
NDI参考链接:https://blog.csdn.net/weixin_41486034/article/details/106597513

小白篇之ENC编码器的SRT协议多平台推流配置相关推荐

  1. 高级篇之ENC编码器实现简单视频会议的方案

    高级篇之ENC编码器实现简单视频会议的案例之一 1 前言 2 方案一 2.1 逻辑图 2.2 设备清单 3 方案二 3.1 逻辑图 3.2 设备清单 4 总结 1 前言 由于现在大家都不方便出行,大家 ...

  2. 小白篇之RTMP编码器辅助OBS实现多个平台推流直播

    小白篇之RTMP编码器辅助OBS实现多个平台推流 大家可能知道OBS默认情况下只能作为RTMP-CLIENT端推流给RTMP-SERVER端,而且只能推给一个平台,虽然网上也有教程教你如何让OBS推流 ...

  3. 小白篇之ENC设备实现USB摄像头转HDMI输出的方法

    小白篇之ENC设备实现USB摄像头转HDMI输出的方法 今天直接进入主题,这个没啥说的,有个客户问我有没有usb转hdmi的设备,答案是肯定的,我们几乎大部分设备都支持,只是今天给大家讲解的是ENC1 ...

  4. 流媒体分析之srt 协议libsrt 实现

    1. srt协议概述 SRT协议能够在不可预测的互联网环境下提供安全.可靠的数据传输,目前广泛应用在流媒体传输领域.理论上SRT可以传输任意类型的数据,但由于其特别针对实时音视频传输做了优化,目前的主 ...

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

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

  6. 高级篇之使用ENC编码器实现USBCam摄像头竖屏直播的方法

    高级篇之使用ENC编码器实现USBCam摄像头竖屏直播的方法 设备准备: 方法简述: 详细配置过程: 第一步:HDMI线自环对接 第二步: 降低分辨率 第三步: 将`USBCam`摄像头信号配置到`H ...

  7. VMIX 23 下Srt协议编码器推流设置教程

    SRT协议是一种能够在复杂网络环境下实时.准确地传输数据流的网络传输技术.它传输层基于UDP,继承了UDP开销低.速度快的优点,再加上SRT自身强大的数据恢复能力,给行业提供了一种安全.稳定.快速的传 ...

  8. 公网传输技术之SRT协议解析(上)

     点击上方"LiveVideoStack"关注我们 作者:张博力 编辑:Alex ▼扫描下图二维码或点击阅读原文▼ 了解音视频技术大会更多信息 " 摘  要:SRT协议( ...

  9. SRT协议在电视直播中的应用

    本文来自安徽广播电视台 直播技术工程师 张博力在LiveVideoStackCon 2020 线上峰会的演讲,详细介绍了SRT协议在信号传输.远程制作等方面的应用,以及实际工作中遇到的相关技术问题. ...

最新文章

  1. 第二章 微服务网关基础组件 - zuul入门
  2. SuperCMS 上传漏洞!
  3. python有内存处理模块吗_使用Python多处理的高内存使用
  4. cdb内存 oracle,【CDB】怎样修改PDB的内存参数
  5. 前端学习(1915)vue之电商管理系统电商系统之通过路由展现权限列表
  6. Linux下Python3.6安装实践与相关问题解决记录
  7. socket 和 TCP/IP 协议的关系
  8. 怎么源码安装 PKGCONFIGPATH设置转
  9. BUPT复试专题—密码(2009)
  10. 《FLUENT 14流场分析自学手册》——2.4 FLUENT14.5的功能模块和分析过程
  11. 域用户创建和计算机加入域
  12. Java个人资产管理系统问题总结
  13. 新加坡国立大学计算机系访学,从实践中来,到实践中去——记新加坡国立大学访学项目...
  14. 有python画螺旋线
  15. MPU6050加速度传感器学习笔记之传感器
  16. 防止衣物褪色的小妙招
  17. Python——定义全局变量
  18. C++编写爬虫脚本爬取网站图片
  19. 【Verilog语法1】加载存储器$readmemh和$readmemb函数的使用
  20. Reflex WMS入门系列三十二:导出到Excel

热门文章

  1. 企业数字化进程的关键一步
  2. SaaS公司融资的「22条军规 」
  3. CI/CD Python+Jenkins+Sonar qube+GitLab
  4. bzoj2843 极地旅行社
  5. c语言dcount求因子个数,51jianyijisuanqi的.doc
  6. 人事工作中的Python运用——批量劳动合同+实习协议
  7. 1776年美国才建国,那一年中国在干什么?
  8. Alpine跑php项目,Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel
  9. 高温老化测试的原理和试验机
  10. 试飞遭遇无动力失速尾旋