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的限制,实际使用场景变得非常灵活。

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

  1. linux+家庭+媒体服务器,Linux下搭建可随时随地传输音乐的个人流媒体服务器

    原标题:Linux下搭建可随时随地传输音乐的个人流媒体服务器 mStream是一个免费的.开源的.跨平台的个人音乐流媒体服务器,它可以让你在所有设备之间同步和传输流媒体音乐.它由一个用NodeJS编写 ...

  2. 10分钟用英特尔®DevKit搭建RTMP流媒体服务器并基于OpenVINO™ AI赋能视频处理

    作者:周兆靖 文章指导:方亮, 郭叶军 1. 本文目的 本文将会介绍如何使用英特尔®认证的DevKit--艾克斯开发板快速搭建RTMP流媒体服务器,并利用FFmpeg*实现视频推流的功能.由于FFmp ...

  3. 手把手教你搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流

    手把手教你搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流 转载自:https://www.jianshu.com/p/06c2025edcd3 by – paperfish 最近尝试着搭建 ...

  4. 使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能

    使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能 本文介绍了如何使用 Nginx 搭建 RTMP 流媒体服务器,并提供配置文件和前端示例,实现直播功能. 环境 操作系统: Ubuntu 18 ...

  5. Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)

    RTMP服务时常用于直播时提供拉流推流传输数据的一种服务.前段时间由于朋友想搭建一套直播时提供稳定数据传输的服务器,所以就研究了一下如何搭建及使用. 1.下载nginx 首先我们要知道一般nginx不 ...

  6. 搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流

    搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流 硕士毕业后,一直从事算法工程师,具有丰富的深度学习,图像视频处理经验,因此录制了一些课程,欢迎大家观看,有问题可以找我私聊:QQ:81664 ...

  7. python打造流媒体服务器_使用Flask搭建一个流媒体服务器

    摘要 收到前不久订阅的PythonWeekly发过来的一个邮件通知,由Miguel写的一篇介绍如何使用Flask搭建一个流媒体服务器的文章,思路很新颖也很有意思.你可以点击这里阅读英文原文.或者跟随本 ...

  8. 使用Flask搭建一个流媒体服务器

    摘要 收到前不久订阅的PythonWeekly发过来的一个邮件通知,由Miguel写的一篇介绍如何使用Flask搭建一个流媒体服务器的文章,思路很新颖也很有意思.你可以点击这里阅读英文原文.或者跟随本 ...

  9. rtmp服务器_nginx+windwos 搭建 rtmp 流媒体服务器

    喜欢就关注我们吧! " 写此篇文章属于笔者在开发项目中,对项目开发架构的一种选型,目前正在探索阿里云的视频直播服务和nginx自行搭建流媒体服务器,希望能选择最优的一种方案,进行开发.&qu ...

  10. 使用nginx结合nginx-rtmp-module搭建rtmp流媒体服务器

    环境:centos7.nginx 1.15.2.nginx-rtmp-module(nginx模块).win7主机,vmvare虚拟机(已安装号centos7系统) 安装前提:centos已安装Ope ...

最新文章

  1. awk 以列为域提取文件内容
  2. 《构建之法》需求分析 读书笔记 Week6
  3. VTK修炼之道4_Win32控制台项目
  4. 《Haskell函数式编程入门》—— 第1章,第1.5节第一个Haskell程序HelloWorld!
  5. 看到腾讯反驳360的文章,笑死我了。
  6. 电机的入门之路系列3--直流电机的工作原理
  7. nagios监控linux主机及服务信息
  8. 高考生男生学铁路好还是计算机好,解析为什么说男生读铁路学校好呢
  9. spark sql 查看分区_Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件
  10. 加入百度地图遇到 framework not found BaiduMapAPI***
  11. php判断浏览器和语言
  12. AOP日志组件 多次获取post参数
  13. Godaddy域名使用说明
  14. JavaWeb request对象常用操作
  15. nginx集群,带负载均衡(监听多个端口),超详细,轮询分发
  16. msm 8953 camera 流程
  17. 2020年最好用的手机是哪一款_2020最好用的5G手机是哪一款?热销2020年5g手机推荐及点评...
  18. 第043篇:VBA之单元格简写与引用、值与地址
  19. js保留2位小数(且四舍五入)
  20. Guys, what is better than sex?

热门文章

  1. 简易电影售票系统(附部分总结)
  2. fedora linux五笔输入法,Fedora 22 上安装 fcitx 五笔输入法
  3. c语言烟花表白程序代码,表白神器-七彩烟花源码
  4. Android视频的操作
  5. 命令行字体推荐-更纱黑体
  6. 高等数学 常用数学公式
  7. windows10系统精简:NTlite工具
  8. 根号n向下取整的c语言编程,【向上取整/向下取整】C语言向上或向下取整 函数...
  9. 1302数码管c语言程序,基于AVR单片机的DS1302数码管时间显示C语言程序设计
  10. 移动通信-抗衰落技术