SRT服务器2:sls(srt live server)

2023-10-17 12:50
文章标签 服务器 server srt sls live

本文主要是介绍SRT服务器2:sls(srt live server),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        前面讲的SRS服务器由于实际测试SRT时,存在不稳的问题,所以切换到sls(srt live server)。实际测试比较稳定,而且代码结构简单,可以十分方便进行功能扩展和维护。

        目前互联网上的视频直播有两种,一种是基于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: 基于SLS的V1.4.9进行开发。1.对文档进行中文化;2.支持SRT的加密传输;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等。

2.依赖

        请先安装SRT,系统环境请参考SRT(https://github.com/Haivision/srt)。SLS只能运行在基于linux的操作系统上,如mac、centos或ubuntu等。

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.

01.05.01

  1. 对文档进行中文化;

  2. 支持SRT的加密传输;

01.05.02

  1. 为了保证程序长期运行,增加看门狗功能;

这篇关于SRT服务器2:sls(srt live server)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225535

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

nginx配置多域名共用服务器80端口

《nginx配置多域名共用服务器80端口》本文主要介绍了配置Nginx.conf文件,使得同一台服务器上的服务程序能够根据域名分发到相应的端口进行处理,从而实现用户通过abc.com或xyz.com直... 多个域名,比如两个域名,这两个域名其实共用一台服务器(意味着域名解析到同一个IP),一个域名为abc