SRT服务器SLS

        目前互联网上的视频直播有两种,一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTP+FLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了对交互要求不高的场景;另一种是WebRTC协议的直播,这种直播方式使用UDP的协议进行流媒体的分发,直播延时小于1秒,同时连接数一般小于10个,主要应用在视频通话、秀场连麦等应用场景。

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

SRT:Secure Reliable Transport (SRT) 是一个开源的传输协议架构,基于UDT(可靠UDP协议)实现,主要是优化在不可靠网络上的传输性能。


srt-live-server 源代码:srt-live-server: 该项目已有3年未更新,将基于V1.4.9进行后续使用上的修改。icon-default.png?t=N7T8https://gitee.com/smartavs_01/srt-live-server

1.介绍

  • SRT -live-server(SLS)是一个基于安全可靠传输(SRT)的低延迟的开源直播流服务器。通常情况下,运输的延迟在互联网SLS小于1秒
  • SLS只支持MPEG-TS格式的流。
  • SLS借鉴了RTMP的URL格式(domain/app/stream_name),例如:msos.push/live/test
  • 如何区分同一流是推流还是拉流?在conf文件中通过设置domain_player/domain_publisher和app_player/app_publisher参数来解析。重要的是,domain_publisher/app_publisher和domain_player/app_player的两个组合字符串在同一个服务器块中不能相等
  • SLS只能运行在基于linux的操作系统上,如mac、centos或ubuntu等。

注意:该项目已有3年未更新,我将基于V1.4.9进行后续使用上的修改。

2.依赖

        请先安装SRT,系统环境请参考SRT(https://github.com/Haivision/srt)。

3.编译

$ sudo make

Bin文件在' Bin '的子目录下生成。

4.文档

关于配置文件,请参见wiki

5.使用说明

5.1.帮助信息

sls -h

5.2.指定配置文件运行

sls -c sls.conf

6.测试

6.1.使用ffmpeg进行测试

推流指令

./ffmpeg -f avfoundation -framerate 30 -i "0:0" -vcodec libx264  -preset ultrafast -tune zerolatency -flags2 local_header  -acodec libmp3lame -g  30 -pkt_size 1316 -flush_packets 0 -f mpegts "srt://[your.sls.ip]:8100?streamid=msos.push/live/test"

播放指令

./ffplay -fflags nobuffer -i "srt://[your.sls.ip]:8100?streamid=msos.pull/live/test"

注意:您可以通过FFMPEG推送直播流。编译FFMPEG源码时,需要启用SRT(--enable-libsrt)

6.2.使用srt-live-client进行测试

​ 在SLS中有一个测试工具,它可以用于性能测试。因为它没有编解码器的开销,主要是主网络开销。SLC可以将SRT流保存为TS文件,也可以将TS文件推送到SRT流。

TS文件作为输入,推送SRT流

./slc -r srt://[your.sls.ip]:8080?streamid=msos.push/live/test -i [TS文件]

SRT流作为输入,保存为TS文件

./slc -r srt://[your.sls.ip]:8080?streamid=msos.pull/live/test -o [TS文件]

7.发布信息

v1.2

  1. 更新内存模式。在v1.1中,发布者将数据复制到每个播放器,在v1.2中,每个发布者将数据放入数组,所有播放器从该数组读取数据。
  2. 更新发布者和播放器的关系。播放器不是发布者的成员。它们之间唯一的关系是数组数据。
  3. 添加推拉功能。支持所有和哈希模式的推,支持循环和哈希的拉。在集群模式下,您可以将流推送到散列节点,并从相同的散列节点拉取该流。
  4. 在pull和push的上游支持hostname:port/app

v1.3

  1. 支持重载。
  2. 为中继添加idle_streams_timeout特性。
  3. 将许可证类型从GPL更改为mit。

v1.4.x

  1. 增加HTTP统计信息。
  2. 增加HTTP事件通知,on_connect, on_close。
  3. 在slc(srt-live-client)工具中添加播放器功能,用于压力测试。
  4. 为slc (srt-live-client)工具增加发布功能,它可以根据DTS推送TS文件。
  5. 修改主机不可用时的HTTP bug。
  6. 将remote_ip和remote_port添加到on_event_url中,这可以作为播放器或发行商的唯一标识。
  7. 为了兼容MAC系统,TCP监听由epoll模式更改为select模式
  8. 修改HTTP检查重复错误以重新打开。
  9. 兼容OBS流,OBS支持srt协议,版本为v25.0以上。(https://obsproject.com/forum/threads/obs-studio-25-0-release-candidate.116067/)
  10. 增加 hls 录制功能.
  11. 将pid文件路径从“~/”更新为“/opt/soft/sls/”
  12. 将pid文件路径从“/opt/soft/sls/”更新为“/tmp/sls”,以避免在某些情况下使用根权限。
  13. 兼容SRT v1.4.1,在设置方法之前添加set latency方法
  14. 兼容raspberrypi.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/149082.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nodejs+vue游戏测评交流系统elementui

可以实现首页、发布招募、公司资讯、我的等,另一方面来说也可以提高在游戏测评交流方面的效率给相关管理人员的工作带来一定的便利。在我的页面可以对游戏攻略、我的收藏管理、实际上如今信息化成为一个未来的趋势或者可以说在当前现代化的城市典范中,发布招募等功能…

中秋时节赏明月,五子棋戏月饼趣 — Flutter中秋限定版五子棋

前言 当中秋时节来临,我们都期待着与亲人朋友共度这个美好的节日。这个时候,除了传统的赏月和品尝美味的月饼,我还有一个特别的建议——尝试一款有趣的Flutter五子棋游戏!这款五子棋游戏以中秋为主题,游戏的棋子也可爱…

微服务的初步使用

环境说明 jdk1.8 maven3.6.3 mysql8 idea2022 spring cloud2022.0.8 微服务案例的搭建 新建父工程 打开IDEA,File->New ->Project,填写Name(工程名称)和Location(工程存储位置),选…

人工智能:创新之路

随着时光的推移,人工智能(Artificial Intelligence,简称AI)已然成为现代科技领域的焦点。AI不再是科幻小说或电影的幻想,而是如今社会生活和商业领域的重要一部分。本文将回顾人工智能的发展历程,探讨其现状…

Qt 综合练习小项目--反金币(2/2)

目录 4 选择关卡场景 4.2 背景设置 4.3 创建返回按钮 4.3 返回按钮 4.4 创建选择关卡按钮 4.5 创建翻金币场景 5 翻金币场景 5.1 场景基本设置 5.2 背景设置 5.3 返回按钮 5.4 显示当前关卡 5.5 创建金币背景图片 5.6 创建金币类 5.6.1 创建金币类 MyCoin 5.6.…

基于SpringBoot的图书进销存管理系统

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 图书类型管理 商品退货管理 客户信息管理 图书添加 客户添加 应收金额 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实…

对象存储,从单机到分布式的演进

关于数据存储的相关知识,请大家关注“数据存储张”,各大平台同名。 通过《什么是云存储?从对象存储说起》我们对对象存储的历史、概念和基本使用有了一个大概的认识。而且我们以Minio为例,通过单机部署的模式实际操作了一下对象存储的GUI,感受了一下对象存储的用法。 在上…

Linux Vi编辑器基础操作指南

Linux Vi编辑器基础操作指南 Linux中的Vi是一个强大的文本编辑器,虽然它有一些陡峭的学习曲线,但一旦掌握了基本操作,它就变得非常高效。以下是Vi编辑器的一些基本用法: 打开Vi编辑器: vi 文件名退出Vi编辑器&#xff…

安装matplotlib__pygame,以pycharm调入模块

安装pip 安装matplotlib 安装完毕,终端输入pip list检查 导入模块出现bug,发现不是matplotlib包的问题,pycharm版本貌似不兼容,用python编辑器可正常绘图,pygame也可正常导入。 ​​​​​​​ pycharm版本问题解决 终…

nodejs+vue中医体质的社区居民健康管理系统elementui

可以实现首页、中医体质量表、健康文章、健康视频、我的等,在我的页面可以对医生、小区单元、医疗药品等功能进行操作。目前主要的健康管理系统是以西医为主,而为了传扬中医文化,提高全民健康意识,解决人民日益增长的美好生活需要…

GPX可视化工具 GPX航迹预览工具

背景 当我们收到别人分享的航迹文档,即gpx文档时,如何快速的进行浏览呢?我们可以使用GIS软件来打开gpx文档并显示gpx中所记录的航迹,例如常用的GIS软件有googleEarth, Basecamp, GPXsee, GPX E…

Ipython和Jupyter Notebook介绍

Ipython和Jupyter Notebook介绍 Python、IPython和Jupyter Notebook是三个不同但密切相关的工具。简而言之,Python是编程语言本身,IPython是对Python的增强版本,而Jupyter Notebook是一种在Web上进行交互式计算的环境,使用IPytho…

基于JavaWeb技术的在线考试系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 考试统计管理 专业列表管理 忘记密码人员登记管理 修改密码 试卷信息 考试信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理…

【论文阅读】大语言模型中的文化道德规范知识

🚀Write In Front🚀 📝个人主页:令夏二十三 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:论文阅读 💬总结:希望你看完之后,能对…

SQL与关系数据库基本操作

SQL与关系数据库基本操作 文章目录 第一节 SQL概述一、SQL的发展二、SQL的特点三、SQL的组成 第二节 MySQL预备知识一、MySQL使用基础二、MySQL中的SQL1、常量(1)字符串常量(2)数值常量(3)十六进制常量&…

目标检测算法改进系列之Backbone替换为FocalNet

FocalNet 近些年,Transformers在自然语言处理、图像分类、目标检测和图像分割上均取得了较大的成功,归根结底是自注意力(SA :self-attention)起到了关键性的作用,因此能够支持输入信息的全局交互。但是由于…

常见的锁策略

目录 一.乐观锁 vs 悲观锁 二.轻量级锁 vs 重量级锁 三.自旋锁 vs 挂起等待锁 四.互斥锁 vs 读写锁 五.可重入锁 vs不可重入锁 一.乐观锁 vs 悲观锁 悲观锁 : 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁…

C++面试题准备

文章目录 一、线程1.什么是进程,线程,彼此有什么区别?2.多进程、多线程的优缺点3.什么时候用进程,什么时候用线程4.多进程、多线程同步(通讯)的方法5.父进程、子进程的关系以及区别6.什么是进程上下文、中断上下文7.一…

基于SpringBoot的视频网站系统

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 视频分享管理 视频排名管理 交流论坛管理 留言板管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 使用旧方法对视频信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运…

YOLOv8改进算法之添加CA注意力机制

1. CA注意力机制 CA(Coordinate Attention)注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制。CA 注意力机制的核心思想是引入坐标信息,以便模型可以更好地理解不同位置之间的关系。如下图: 1. 输入特…