SRT服务器1:SRS

1.简介

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

​ SRS是一个开源的(MIT协议)简单高效的实时视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等协议。 SRS媒体服务器和FFmpeg、OBS、VLC、 WebRTC等客户端配合使用,提供流的接收和分发的能力,是一个典型的发布 (推流)和订阅(播放)服务器模型。 SRS支持互联网广泛应用的音视频协议转换,比如可以将RTMP或SRT, 转成HLS或HTTP-FLV或WebRTC等协议。

​ SRS提供了HTTP API开放接口,可以查询系统的状态和流状态。同时还支持HTTP Callback 支持回调能力,主动通知你的系统,并可以实现流的鉴权能力和业务定制(比如动态DVR)。SRS也支持官方的Prometheus Exporter 对接到云原生的监控系统,具备强大的可观测性。SRS支持会话级别可追踪日志,极大降低了系统维护成本。
​ SRS使用ANSI C++ (98)开发,只使用了基本的C++能力,可以在Linux、Windows、macOS等多个平台运行。

2.下载SRS源码

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

3.编译源码

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

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__ {
}

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'

7.SRS对SRT的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的输出功能;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷咪哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值