SRT服务端的搭建

news/2024/7/10 20:41:01 标签: ffmpeg, 网络, SRT, SRS

1.简介

​ 前面讲了SRT有三种模式,那么这节来说说Listener模式服务端的搭建。关于Listener模式之前在sample中的srt-file-transmit和srt-live-transmit就有简单用到,本章的Listener模式服务端,考虑到实际生产使用,就采用开源项目srs进行搭建。

SRS_4">2.下载SRS源码

https://github.com/ossrs/srs.git

3.编译源码

cd srs/trunk
./configure --srt=on
make
make install

SRS_17">4.编写SRS配置文件

​ 将以下内容保存为文件,譬如conf/srt.conf,服务器启动时指定该配置文件(srs的conf文件夹有该文件)。

# conf/srt.conf
listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;
srt_server {
    enabled on;
    listen 10080;
}
vhost __defaultVhost__ {
}

SRS_35">5.启动SRS

./objs/srs -c conf/srt.conf

6.推流测试

1.借助FFMPEG产生一个UDP流,当然有其他方式也行:

ffmpeg  -stream_loop  -1  -re  -i   /home/msatartup.mp3   -f   mpegts   udp://127.0.0.1:12001?pkt_size=1316

2.采用srt-live-transmit工具作为caller方进行推流

srt-live-transmit udp://127.0.0.1:12001 'srt://127.0.0.1:10080?streamid=#!::r=live/livestream,m=publish'

3.采用srt-ffplay工具作为caller方进行推流

srt-ffplay 'srt://127.0.0.1:10080?streamid=#!::r=live/livestream,m=request'

SRSSRTURL_61">7.SRSSRT的URL的格式要求

​ 因为srt是四层传输协议,所以无法确定对某个srt url操作是推流还是拉流。

​ 在srt官网中有对推/拉流实现方法的推荐:AccessControl.md 关键方法是通过streamid参数来明确url的作用,streamid的格式符合YAML格式。

7.1.SRT URL no Vhost

srt url举例:

  • 推流地址: srt://127.0.0.1:10080?streamid=#!::r=live/livestream,m=publish
  • 拉流地址: srt://127.0.0.1:10080?streamid=#!::r=live/livestream,m=request
  • 对应的rtmp拉流地址为:rtmp://127.0.0.1/live/livestream

其中:

  • #!::
    • 开始标记,符合yaml格式标准
  • r
    • 映射到rtmp地址中的/app/stream;
  • m
    • publish表示推流。
    • request表示拉流。

7.2.SRT URL for Vhost

srt url举例:

  • 推流地址: srt://127.0.0.1:10080?streamid=#!::h=srs.srt.com.cn,r=live/livestream,m=publish
  • 拉流地址: srt://127.0.0.1:10080?streamid=#!::h=srs.srt.com.cn,r=live/livestream,m=request
  • 对应的rtmp拉流地址为:rtmp://127.0.0.1/live/livestream?vhost=srs.srt.com.cn

其中:

  • h

    • 映射到rtmp地址中的vhost;

8.问题

​ 前面我们知道SRT网络传输层运行,它可以传输任何类型的视频格式、编解码器、分辨率或帧速率。

​ 但目前的SRS/4.0.265发布版本,在接收到SRT推流时,会将流自动转换为RTMP协议输出,导致对音视频编码格式有了要求,使用起来十分不方便。好在使用最新的SRT开发版本,已经在着手解决该问题。另外,也可以通过修改SRS的源码,暂时关闭SRS到RTMP的输出功能;


http://www.niftyadmin.cn/n/1335878.html

相关文章

非旋Treap总结 : 快过Splay 好用过传统Treap

非旋$Treap$ 其高级名字叫$Fhq\ Treap$,既然叫$Treap$,它一定满足了$Treap$的性质(虽然可能来看这篇的人一定知道$Treap$,但我还是多说几句:$Fhp\ Treap$就是继承了$Treap$的随机系统,在二叉搜索的基础上&a…

字符截取和替换

1.说明 1.1.研究目的 实现对软件或系统系统配置文件内容的更改 1.2.支持格式 keyval key"val" key val #keyval #key"val" #key val2.字符串截取 假设有变量: varhttp://www.aaa.com/123.html 假设有变量: varhttp://www.aaa.com/123.htm 2.1.左边开…

减少的 if else 嵌套 可以使用java 8的Consumer

private static Map<String, Consumer> maps new HashMap<String, Consumer>(); static { //这里用到landa表达式&#xff0c;新特性。 其中 Cat&#xff0c;Dog 可以看成 if-else 中的条件 maps.put("type1", productVO -> test1(productVO)); maps…

网络编程-socketserver

网络编程使用socketserver&#xff0c;通常包括以下几步&#xff1a;一、定义类&#xff0c;并继承socketserver.BaseRequestHandler 二、重写handle方法 三、实例化TCPServer&#xff0c;并传递IP,PORT等信息&#xff0c;并把定义的类传进去。 四、server.server_forever&…

【译】Swift算法俱乐部-哈希表

本文是对 Swift Algorithm Club 翻译的一篇文章。 Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目&#xff0c;目前在GitHub上有18000⭐️&#xff0c;我初略统计了一下&#xff0c;大概有一百左右个的算法和数据结构&#xff0c;基本…

戴尔不能用

北京某店购买**戴尔笔记本**电脑&#xff0c;刚用了四五天&#xff0c;就开始黑屏&#xff0c;很多次黑屏&#xff0c;然后找到**戴尔**店理论&#xff0c;人家说是软件更新&#xff0c;这个说法对吗&#xff1f;我要求给换一台&#xff0c;商家说不是电脑的问题&#xff0c;也…

JavaScript创建对象(七)——稳妥构造函数模式

2019独角兽企业重金招聘Python工程师标准>>> 道格拉斯-克罗克福德发明了JavaScript中的稳妥对象这个概念。所谓稳妥对象&#xff0c;指的是没有公共属性&#xff0c;而且其方法也不引用this的对象。稳妥对象最适合在一些安全的环境中&#xff08;这些环境中会禁止使…

从零讲解搭建一个NIO消息服务端

本文首发于猫叔的博客 | MySelf&#xff0c;如需转载&#xff0c;请申明出处. 假设 假设你已经了解并实现过了一些OIO消息服务端&#xff0c;并对异步消息服务端更有兴趣&#xff0c;那么本文或许能带你更好的入门&#xff0c;并了解JDK部分源码的关系流程&#xff0c;正如题目…