业务场景
在Web浏览器端展示摄像头的视频数据。
协议
物联代理推流协议:rtmp
浏览器器拉流协议:http-flv
推流方案
1、Nginx加nginx-http-flv-modules模块
2、采用SRS服务器
推流服务SRS网站:https://ossrs.io/lts/zh-cn/
推流服务GitHub: https://github.com/ossrs/srs
两种方案。建议使用SRS服务器,简单、性能高。
SRS方案
本文详细讲解SRS方案。
SRS部署
1、Docker部署SRS
docker run -it -d -p 1935:1935 -p 1985:1985 -p 8080:8080 --name srs registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5
建立目录
mkdir -p /root/srs
3、拷贝数据
把容器中的配置文件复制出来
docker cp -a srs:/usr/local/srs/conf /root/srs
把容器中的数据文件复制出来
docker cp -a srs:/usr/local/srs/objs /root/srs
4、停服务、删除容器
docker stop srs
docker rm srs
重新启动
docker run -it -p 1935:1935 -p 1985:1985 -p 8080:8080 --name srs --restart=always -v /root/srs/conf:/usr/local/srs/conf -v /root/srs/objs:/usr/local/srs/objs registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5
推流地址说明
示例:rtmp://192.168.60.44:1935/live/livestream?token=xxx
live:app名称。位置不可变更
livestream: 流名称。位置不可变更
token=xxx:自定义,本示例中使用token进行验证。根据目前测试结果自定义参数只能为一个。
对应播放地址: http://192.168.60.44:8080/live/livestream.flv
推流内容存储位置,以rtmp://192.168.60.44:1935/live/livestream?token=xxx为例
画框处第一级为app名即live名,第二级为流名称和文件后缀
使用OBS推流设置如下:
使用VLC media player播放地址如下:
也可以使用rtmp协议进行播放
HTTP回调
通过HTTP回调配置,可以验证是否允许客户端进行推流或播放流
- 配置回调
修改/root/srs/conf目录下的docker.conf配置文件
在【vhost __defaultVhost__ 】节点里增加
http_hooks {
on_publish http://192.168.60.109:48083/auth;
on_play http://192.168.60.109:48083/auth;
}
on_publish: 推流时的回调地址,可多个,以空格区分
on_play: 播放时的回调地址,可多个,以空格区分
- 回调地址说明
回调地址必须为POST方法。
允许推流或播放返回类型使用application/json,返回{code: 0 }或者Content-Type", "text/plain; charset=utf-8 返回0。其他情况为失败,不允许播放
- 回调请求体示例
{
"server_id": "vid-13043e0",
"service_id": "573n87xm",
"action": "on_publish",
"client_id": "564drr64",
"ip": "192.168.60.109",
"vhost": "__defaultVhost__",
"app": "live",
"tcUrl": "rtmp://192.168.60.44:1935/live",
"stream": "livestream",
"param": "?token=xxxx",
"stream_url": "/live/livestream",
"stream_id": "vid-4e37rxn"
}