SRS流媒体服务进行视频推送拉取

前言

SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。
在这里插入图片描述
Note: 简单的单节点架构,适用于大多数场景
在这里插入图片描述

一、SRS部署

1. 地址

https://ossrs.net/lts/zh-cn/docs/v5/doc/getting-started

2. Linux环境下docker方式部署

192.168.3.10为流媒体服务地址

export CANDIDATE="192.168.3.10"
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 1990:1990 -p 8088:8088 \
    --env CANDIDATE=$CANDIDATE -p 8000:8000/udp \
    registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 ./objs/srs -c conf/https.docker.conf

在这里插入图片描述

二、rtmp视频推送

1. 使用 Ffmpeg推送本地视频

 ffmpeg -re -i D:\work\Ffmpeg\ffmpeg_code\shiping.mp4 -c copy -f flv rtmp://192.168.3.10/live/livestream

在这里插入图片描述

2. 使用 Ffmpeg推送摄像头视频

#获取摄像头名称

ffmpeg -list_devices true -f dshow -i dummy 

在这里插入图片描述获取视频流并推流

ffmpeg -f dshow -i video="XiaoMi USB 2.0 Webcam":audio="麦克风 (Realtek High Definition Audio)" -vcodec libx264 -x264opts "bframes=0"  -r 25 -g 25 -preset:v ultrafast -tune:v zerolatency -codec:a aac -ac 2 -ar 44100  -f flv rtmp://192.168.3.10/live/livestream

在这里插入图片描述

三、rtmp视频拉取

使用VLC播放流
在这里插入图片描述在这里插入图片描述

总结

你可以推拉多路流到SRS,不需要特殊的设置,按照前面的步骤运行SRS后,改变推拉流的URL就可以。比如:

rtmp://ip/live/livesteam
rtmp://ip/live/livesteamN
rtmp://ip/liveN/livestreamN
srt://ip:10080?streamid=#!::r=anyM/streamN,m=publish
webrtc://localhost/anyM/streamN
http://ip:8080/anyM/streamN.flv
http://ip:8080/anyM/streamN.m3u8
https://ip:8080/anyM/streamN.flv
https://ip:8080/anyM/streamN.m3u8
### 实现流媒体服务器回调接口监听视频播放状态 为了实现在流媒体服务器上设置或实现回调以监听视频播放事件,通常可以通过配置HTTP回调机制来完成这一目标。对于SRS流媒体服务而言,在客户端执行特定操作时(如开始播放),能够触发相应的回调请求发送至预设的服务地址。 在SRS中定义了多种类型的回调事件,其中`on_play`用于表示当有客户端开始并播放某个直播流时所触发的动作[^2]。具体来说,每当有一个新的播放连接建立起来之后,SRS将会向设定好的URL发起POST请求,并附带有关此次播放的信息作为JSON格式的数据体传递过去。 以下是针对此需求的一个简单示例说明: #### 配置SRS以启用`on_play`回调 编辑SRS的配置文件(通常是`srs.conf`),找到对应的虚拟主机部分,并加入如下所示的相关参数来激活`on_play`回调功能: ```nginx vhost __defaultVhost__ { ... http_callback { enabled on; # 当有人开始观看某一直播流时调用该API通知外部系统 on_play http://your.server.address/api/on_play; # 可选:如果还需要处理其他类型的事件,则继续添加更多项... # on_publish http://your.server.address/api/on_publish; # on_unpublish http://your.server.address/api/on_unpublish; # on_stop http://your.server.address/api/on_stop; } } ``` 在此基础上,确保替换掉上述代码片段中的`http://your.server.address/api/on_play`为实际部署的应用程序接收这些回调消息的具体路径。 #### 处理接收到的回调信息 一旦成功设置了以上配置选项,那么每当前端用户启动一次新视频流的播放过程,位于后台运行着的Web应用就应当准备好接受到来自SRS发出的通知。假设采用Node.js框架构建这样的RESTful API端点为例: ```javascript const express = require('express'); const app = express(); app.use(express.json()); // 定义处理'play'事件的方法 app.post('/api/on_play', (req, res) => { const playInfo = req.body; console.log(`A new stream is being played: ${playInfo.stream}`); // 这里可以根据业务逻辑进一步扩展,比如更新数据库记录、统计在线人数等 res.sendStatus(200); }); // 启动Express服务器监听8081端口上的请求 app.listen(8081, () => { console.log('Server listening at port %d', 8081); }); ``` 这段脚本创建了一个简单的HTTP服务器实例用来响应来自SRS关于播放行为变化的消息推送;它会打印出每次发生的新播放活动详情到控制台日志当中去——当然这只是一个非常基础的例子而已,在真实场景下往往还会涉及到更加复杂的功能模块集成工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Leonban

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

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

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

打赏作者

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

抵扣说明:

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

余额充值