SRS主要面向系统分析员,程序员,测试员,实施员和最终用户。
SRS是整个软件开发的依据,它对以后阶段的工作起指导作用,同时也是项目完成后系统验收的依据,还是《用户手册》和《测试计划》的编写依据。
公司最近在接入摄像头,但是摄像头返回的流地址是 rtsp 格式的,前端无法直接播放。经过调研后,决定采用 ffmpeg 进行转码,推流到 srs ,再由前端进行获取。 srs 可以支持集群、回调等功能,可以更好的进行以后需求的扩展。特此记录利用回调功能实现鉴权,指定流才能播放。
srs github
v4_CN_HTTPCallback
安装采用 docker 安装的方式比较快捷,但是因为需要回调需要修改配置,所以利用 docker 启动了 srs 后,需要将配置文件复制出来挂载到本地,再利用本地的配置进行启动。
简单测试一下推流:
使用 vlc ,选择 open network stream 填入 rtmp://127.0.0.1/live/livestream 可以播放。
将拉流的地址后面加上后缀,流可以可以播放,例如 rtmp://127.0.0.1/live/livestream?token=1 实际上也是没有影响的,如果设置了回调,那么 srs 会将原地址后的所有字符串(例如 ?token=1 )当做附加信息发送给回调方。
现在,假设需要判断当一个客户端打开某个流地址时,这个流是否真的可以播放,那么可以设置 on_play 回调;如果需要监听客户端何时断开连接,从而也可以回收先前起的 ffmpeg 进程,可以设置 on_close 回调,其他需求可以查看官方文档说明。
修改挂载在本地的 ~/Downloads/srs/conf/srs.conf 文件,在 vhost__defaultVhost__ 下添加 http_hooks :
更新完新的 conf 文件后,重启一下 srs 即可。
对于回调接口的限制,只需要在成功时返回 0 ,返回其他任何数字都认为是失败。在 controller 中添加对应的回调接口:
此时也可以在 srs 的日志中看到当有客户端连接时发送了请求:
request 里的内容会被发送到指定的回调接口。
关闭流的接口也是类似,在此不赘述了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)