当前位置: 首页 > news >正文

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.

相关文章:

SRT服务器SLS

目前互联网上的视频直播有两种,一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTPFLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了…...

Linux 安装 Android SDK

先安装jdk RUN apt-get install default-jdk 参考:http://t.zoukankan.com/braveym-p-6143356.html mkdir -p $HOME/install/android-sdk wget https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip unzip commandlinetools-linu…...

【QT开发笔记-基础篇】| 第四章 事件QEvent | 4.4 鼠标按下、移动、释放事件

本章要实现的整体效果如下: QEvent::MouseButtonPress ​ 鼠标按下时,触发该事件,它对应的子类是 QMouseEvent QEvent::MouseMove ​ 鼠标移动时,触发该事件,它对应的子类是 QMouseEvent QEvent::MouseButtonRel…...

vue3父子通信+ref,toRef,toRefs使用实例

ref是什么? 生成值类型的响应式数据可用于模板和reactive通过.value修改值可以获取DOM元素 <p ref”elemRef”>{{nameRef}} -- {{state.name}}</p> // 获取dom元素 onMounted(()>{ console.log(elemRef.value); }); toRef是什么? 针对一个响应式对象(rea…...

输入电压转化为电流性 5~20mA方案

输入电压转化为电流性 5~20mA方案 方案一方案二方案三 方案一 XTR111是一款精密的电压-电流转换器是最广泛应用之一。原因有二&#xff1a;一是线性度非常好、二是价格便宜。总结成一点&#xff0c;就是性价比高。 典型电路 最终电路 Z1二极管处输出电流表达式&#xff1a;…...

SpringBoot自带模板引擎Thymeleaf使用详解①

目录 前言 一、SpringBoot静态资源相关目录 二、变量输出 2.1 在templates目录下创建视图index.html 2.2 创建对应的Controller 2.3 在视图展示model中的值 三、操作字符串和时间 3.1 操作字符串 3.2 操作时间 前言 Thymeleaf是一款用于渲染XML/HTML5内容的模板引擎&am…...

推荐算法——Apriori算法原理

0、前言&#xff1a; 首先名字别读错&#xff1a;an pu ruo ao rui 【拼音发音】Apriori是一种推荐算法推荐系统&#xff1a;从海量数据中&#xff0c;帮助用户进行信息的过滤和选择。主要推荐方法有&#xff1a;基于内容的推荐、协同过滤推荐、基于关联规则的推荐、基于知识的…...

vue ant 隐藏 列

vue ant 隐藏 列 如果你使用的是Vue和Ant Design Vue组件库&#xff0c;你可以使用v-if指令来实现条件渲染来隐藏列。以下是一个示例代码&#xff1a; <template><a-table :columns"columns" :data-source"data"><template v-slot:custom…...

java基础之初始化顺序

初始化顺序 在类中变量定义的顺序决定了它们初始化的顺序。在创建任何java对象时&#xff0c;都是依次调用父类非静态初始化块、父类构造器执行初始化、本类的非静态初始化块、本类构造器执行初始化 public class House { // 构造器之前 Window w1 new Window(1); Ho…...

FFmpeg 命令:从入门到精通 | ffmpeg filter(过滤器 / 滤镜)

FFmpeg 命令&#xff1a;从入门到精通 | ffmpeg filter&#xff08;过滤器 / 滤镜&#xff09; FFmpeg 命令&#xff1a;从入门到精通 | ffmpeg filter&#xff08;过滤器 / 滤镜&#xff09;ffmpeg fliter 基本内置变量视频裁剪文字水印图片水印画中画视频多宫格处理 FFmpeg 命…...

【C语言】23-结构体类型

目录 1. 如何建立结构体类型2. 如何使用结构体2.1 定义结构体变量2.2 结构体变量的初始化和引用2.3 结构体数组2.4 结构体指针2.4.1 指向结构体变量的指针2.4.2 指向结构体数组的指针C 语言提供了一些由系统已定义好的数据类型,如: int、 float、 char 等,用户可以在程序…...

Python小技巧:快速合并字典dict()

文章目录 前言知识点字典合并1. dict.update()基础合并2. 字典推导式 update() 后话 前言 这里是Python小技巧的系列文章。这是第四篇&#xff0c;快速合并字典。 在Python的使用中&#xff0c;有时候需要将两个 dict(字典) 进行合并。 通常我们会借助 dict(字典) 的内置方法 …...

如何使用 React 和 Docusaurus 编写的一些自定义钩子(Hook)

import useRouteContext from @docusaurus/useRouteContext; import {DependencyList, useEffect, useRef, useState, useMemo } from react; import {dequal } from dequal; /* eslint-disable global-require */ // @ts-ignore/*** 用于深度检测依赖的useMemo钩子* @param fa…...

【初识Linux】Linux环境配置、Linux的基本指令 一

Linux基本指令一 一、学习前提(环境配置&#xff09;①安装Xshell和云服务器推荐②Xshell用途如下图③打开Xshell 二、 Linux基本指令①whoami和who指令②pwd、ls、ls -l三个指令ls指令扩充 ③cd指令前提了解有了上面的认识&#xff0c;我们就可以开始cd指令的学习了 ④tree指令…...

conda常用命令参数,指定版本,依赖库文件,创建虚拟环境,删除,激活,退出,内部安装包,pip通过代理安装包

以下是conda的常用命令和参数&#xff1a; 1. 创建虚拟环境&#xff1a; - 创建一个新的虚拟环境&#xff1a;conda create -n 环境名 pythonx.x - 使用指定的依赖文件创建虚拟环境&#xff1a;conda create -n 环境名 --file requirements.txt 2. 激活虚拟环境&#x…...

【锁的区别】C++线程库和POSIX线程库锁的区别

C线程库和POSIX线程库锁的区别 C线程库代码段的互斥&#xff1a;mutex、recursive_mutex、timed_mutex、recursive_timed_mutex互斥量mutex&#xff1a;直接进行lock()或者unlock()递归互斥锁recursive_mutex&#xff1a;可以多次加锁&#xff0c;意味着加几次锁就需要解几次锁…...

网络层·IP协议

承接前文TCP协议-CSDN博客 简介 协议头格式 网段划分(重要) 划分方法 IP地址的数量限制(背景介绍) 私有IP地址和公网IP地址(提出解决思路) NAT技术(解决方法) 路由 网络层 在复杂的网络环境中确定一个合适的路径 IP协议 主机: 配有IP地址, 可以认为就是你的电脑; 路由器:…...

RabbitMQ学习笔记(下):延迟队列,发布确认高级,备份交换机

十、延迟队列 延迟队列 概念&#xff1a; 延迟队列使用场景&#xff1a; 流程图&#xff1a; 延迟队列整合Springboot 导入依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…...

Python 无废话-基础知识面向对象编程详解

类定义 如何理解万物皆对象&#xff1f; 生活中一些事物&#xff0c;动物&#xff08;可爱的小狗、调皮的小猫&#xff09;、交通工具&#xff08;比亚迪U8汽车、飞机&#xff09;、人&#xff08;学生、教师&#xff09;…… 这些对象都有着独特或共性的属性和方法来描述其…...

凉鞋的 Unity 笔记 106. 第二轮循环场景视图Sprite Renderer

106. 第二轮循环&场景视图&Sprite Renderer 从这一篇开始&#xff0c;我们开始进行第二轮循环。 这次我们至少能够在游戏运行窗口看到一些东西。 首先还是在场景层次窗口进行编辑&#xff0c;先创建一个 Sprite&#xff0c;操作如下: 创建后&#xff0c;会在 Scene …...

Vue中如何进行分布式路由配置与管理

Vue中的分布式路由配置与管理 随着现代Web应用程序的复杂性不断增加&#xff0c;分布式路由配置和管理成为了一个重要的主题。Vue.js作为一种流行的前端框架&#xff0c;提供了多种方法来管理Vue应用程序的路由。本文将深入探讨在Vue中如何进行分布式路由配置与管理&#xff0…...

Solidity 合约漏洞,价值 38BNB 漏洞分析

Solidity 合约漏洞&#xff0c;价值 38BNB 漏洞分析 1. 漏洞简介 https://twitter.com/NumenAlert/status/1626447469361102850 https://twitter.com/bbbb/status/1626392605264351235 2. 相关地址或交易 攻击交易&#xff1a; https://bscscan.com/tx/0x146586f05a451313…...

【C++】:类和对象(2)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux的基础知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…...

【GIT版本控制】--提交更改

一、添加文件到暂存区 在GIT中&#xff0c;要提交更改&#xff0c;首先需要将文件添加到暂存区&#xff08;Staging Area&#xff09;。这是一个用于存放将要提交的更改的临时区域。以下是将文件添加到暂存区的步骤&#xff1a; 打开终端或命令提示符&#xff1a;首先&#x…...

解决高分屏DPI缩放PC端百度网盘界面模糊的问题

第一步 更新最新版本 首先&#xff0c;在百度网盘官网下载最新安装包&#xff1a; https://pan.baidu.com/download 进行覆盖安装 第二步 修改兼容性设置 右键百度网盘图标&#xff0c;点击属性&#xff0c;在兼容性选项卡中点击更改所有用户的设置 弹出的选项卡中选择更改高…...

全能视频工具 VideoProc Converter 4K for mac中文

VideoProc 4K提供快速完备的4K影片处理方案&#xff0c;您可以透过这款软体调节输出影片格式和大小。能够有效压缩HD/4K影片体积90%以上&#xff0c;以便更好更快地上传到YouTube&#xff0c;或是通过电子邮件附件发送。业界领先的视讯压缩引擎&#xff0c;让你轻松处理大体积视…...

Vue中实现自定义编辑邮件发送到指定邮箱(纯前端实现)

formspree里面注册账号 注册完成后进入后台新建项目并且新建表单 这一步完成之后你将得到一个地址 最后就是在项目中请求这个地址 关键代码如下&#xff1a; submitForm() {this.fullscreenLoading true;this.$axios({method: "post",url: "https://xxxxxxx…...

计算机专业毕业设计项目推荐11-博客项目(Go+Vue+Mysql)

博客项目&#xff08;GoVueMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以及模式&am…...

QT实现TCP

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//实例化一个服务器server new QTcpServer(this);// 此时&#xff0c;服务器已经成功进入监听状态&#xff0c…...

PostgreSQL ash —— pgsentinel插件

一、 插件作用 众所周知&#xff0c;pg是没有像oracle那样的ash视图的&#xff0c;因此要回溯历史问题不太方便。pgsentinel插件会将pg_stat_activity与pg_stat_statements视图内容定期快照&#xff0c;并存入pg_active_session_history和pg_stat_statements_history视图中。 1…...

效果好的网站建设公司/常见的网站推广方法有哪些

阅读本文大概需要 3 分钟。昨晚回到家&#xff0c;打开手机看到微信四五十条未读的公众号&#xff0c;我终于忍受不了焦虑的心情&#xff0c;一下子取关了97个公众号&#xff0c;只留下每篇必读的43个公众号&#xff08;其中有10个是工具类的&#xff0c;比如12306&#xff0c;…...

如何做网课网站/小熊猫seo博客

# 什么是灰度发布&#xff0c;以及灰度发布A/B测试 在一般情况下&#xff0c;升级服务器端应用&#xff0c;需要将应用源码或程序包上传到服务器&#xff0c;然后停止掉老版本服务&#xff0c;再启动新版本。但是这种简单的发布方式存在两个问题&#xff0c;一方面&#xff0c;…...

wordpress背景动画/手机优化大师下载安装

这种实现方式的最坏情况和最好情况时间复杂度分别为O&#xff08;n2&#xff09;和 O&#xff08;n&#xff09; 转载于:https://www.cnblogs.com/chihaoyuIsnotHere/p/9734858.html...

党的建设专题网站/什么是营销

简介 SequenceNumber是SQL Server2012推出的一个新特性。这个特性允许数据库级别的序列号在多表或多列之间共享。对于某些场景会非常有用&#xff0c;比如&#xff0c;你需要在多个表之间公用一个流水号。以往的做法是额外建立一个表&#xff0c;然后存储流水号。而新插入的流水…...

个人备案做公司网站/seo的内容主要有哪些方面

工作中经常处理数据&#xff0c;有很多小伙伴问我&#xff1a;如何在短时间内&#xff0c;快速入门数据透视表&#xff1f;&#xff0c;其实相比于Excel函数的学习&#xff0c;是不难的&#xff0c;今天我把自己使用数据透视表的经验&#xff0c;整理了下面8条干货送给你&#…...

建设平面设计工作室网站方案/建站公司

题目&#xff1a; 给定一个数组&#xff0c;它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易&#xff08;即买入和卖出一支股票&#xff09;&#xff0c;设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入…...