SRT公网点对点传输及搭建SRT流媒体服务器

SRT是一种开源传输技术,它是基于UDP协议的,与RTMP不同的是,它具有高码率低延迟的传输特性,加强了在复杂不稳定网络环境中的传输可靠性,它没有TCP冗余效应,长时间推流延时并不会增加。它不像NDI那样只适用于局域网传输,它更适用于公网环境下的信号传输。

S代表Secure,即安全加密的视频流,R代表Reliable,即具有从数据严重丢包中恢复的可靠性,T代表Transport,即动态适应变化的网络状况。

在音视频数据包传输的过程中,SRT会检测并适应两个传输点之间的实时网络状况,有助于补偿由于网络的拥塞而引起的抖动和带宽波动,它的错误恢复机制最大程度地减少了Internet连接中常见的数据包丢失。 SRT支持AES加密以实现端到端的安全性,从而确保您的视频流不会被盗取。

目前常用的VLC,OBS,vMix,larixbroadcaster都已支持SRT的推拉流,本文主要介绍一下基于SRT的公网点对点传输以及搭建SRT流媒体分发服务器,但是前提是发送端和接收端有一端具有公网固定IP,或者流媒体分发服务器有公网固定IP。

1、SRT的公网点对点传输

测试软件采用vMix 23版本,vMix支持SRT的多路信号推流和拉流,并可以对SRT参数进行简单设置,主要有推拉流延迟,密码,推流编码格式,分辨率,码率等等。为了测试延时,在vMix里打开显示北京时间的网页,与推流端的北京时间做对比测试延时。
在这里插入图片描述
推流端因为有公网IP,所以类型选择Listener,端口任意填写4111,延时为120ms,没有密码,h264编码,2M码率。
在这里插入图片描述
拉流端为DHCP非固定IP,拉流类型选择Caller,填上推流端的IP,端口,延时,点击OK即可。

同时在本机再打开一个实时的北京时间网页,即可与推流端推送过来的北京时间信号做对比,测试延时。
在这里插入图片描述
如图所示,左边为拉流传输回来的信号,右边为本机打开的网页,可以看到延时仅为1秒,但是因为没有精确到毫秒级,实际上不到1秒,真实延时为600-800ms。而同等2M码率的RTMP推流,在通常默认未经优化的状态下,延迟初期在3秒左右,长时间推流则会到8秒甚至更高。在之后的测试中SRT 8M码率的推流延时也仅为1秒,长时间推流延时稳定不会增加,充分体现了SRT的优点。

2、搭建SRT分发服务器

在SRT官网 https://github.com/Haivision/srt 下载官方源码压缩包,下载后在首页底部有不同操作系统的安装说明,本次使用的服务器为阿里云上的CentOS7服务器,配置不高,租用价格可以承受。
在这里插入图片描述
我是安装在/home/libsrt目录下,该目录下的bin文件夹中srt-live-transmit为SRT直播流转发,srt-file-transmit为SRT文件转发,srt-ffplay为SRT流播放(仅在具有图形界面的操作系统中可用)。SRT分发服务器使用的是srt-live-transmit,开启方法也很简单:

cd /home/libsrt/bin
./srt-live-transmit srt://:4201 srt://:4202 -v

在这里插入图片描述
这里即监听本机IP的4201端口为SRT流输入端口,本机IP的4202端口为SRT流输出端口,然后在vMix里将推流端选为caller,填上服务器IP和4201端口,拉流端也选为caller,填上服务器IP和4202端口即可。
在这里插入图片描述
这里右边是vMix最终输出,推流给自己搭建的SRT分发服务器,1080p分辨率,2M码率,延时设为100ms。左边是从SRT分发服务器拉流回来的画面,延时也设为100ms。可以看到,在公网SRT分发服务器做转发的情况下,一推一拉延时仅为600ms。

在之后的测试里,将码率增加到10M,一推一拉延时也仅为1秒,可见在高画质,低延时的需求下,SRT还是相当优秀的。同时有了云上的SRT分发服务器,发送端和接收端便不再受限于公网固定IP的限制,实际使用场景变得非常灵活。

猜你喜欢

转载自blog.csdn.net/weixin_42550813/article/details/106374524
今日推荐