下载编译运行
git clone https:///ossrs/srs.git
./configure --h265=on
make
编译完成后即可启动SRS
# 启动
./objs/srs -c conf/srs.conf
# 查看日志
tail -n 30 -f ./objs/srs.log
开放端口
默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可以通过修改conf/srs.conf文件进行变更
SRS网页管理界面
网址: http://192.168.31.14:8080/
点击进入 SRS控制台,可以查看相关详情,包括当前系统的内存CPU,当然最有用的还是查看当前的视频流参数,查看当前推流个数和用户点播个数
SRS增加身份验证
作为一个rtmp服务器,基本的验证机制是需要有的,srs很巧妙的使用了http callback的方式来实现验证机制,我测试的情况如下:
1)首先,在服务器上,使用了如下配置:
# main config for srs.
# @see full.conf for detail config.
listen 1935;
max_connections 1000;
#srs_log_tank file;
#srs_log_file ./objs/srs.log;
daemon on;
http_api {
enabled on;
listen 1985;
}
http_server {
enabled on;
listen 8081;
dir ./objs/nginx/html;
}
rtc_server {
enabled on;
listen 8000; # UDP port
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
candidate $CANDIDATE;
}
vhost __defaultVhost__ {
hls {
enabled on;
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
rtc {
enabled on;
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtmp-to-rtc
rtmp_to_rtc off;
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
rtc_to_rtmp off;
}
# http回调
http_hooks{
enabled on;
on_connect http://127.0.0.1:8631/api/hook/index;
on_close http://127.0.0.1:8631/api/hook/index;
on_publish http://127.0.0.1:8631/api/hook/index;
on_unpublish http://127.0.0.1:8631/api/hook/index;
on_play http://127.0.0.1:8631/api/hook/index;
on_stop http://127.0.0.1:8631/api/hook/index;
on_dvr http://127.0.0.1:8631/api/hook/index;
on_hls_notify http://127.0.0.1:8631/api/hook/index;
}
play{
gop_cache_max_frames 2500;
}
}
1、HTTP回调
HttpCallBack
- 事件:发生该事件时,回调指定的HTTP地址
- HTTP地址:可以支持多个,以空格分隔,SRS会依次回调这些接口
- 数据传输:SRS将数据POST到HTTP接口
推流授权
回调的事件很多,这里介绍常用的推送RTMP流的场景:on_play
取RTMP流时,需要安全校验
推流地址:
rtmp://ip:1935/live/45010000041310000053-1?token=25874920-2ac7-4f3f-aaf3-21cd8e6af403
HTTP回调:
打印的POST数据如下:
{"server_id":"vid-6m79i4s","service_id":"9948qv04","action":"on_play","client_id":"ogi41j50","ip":"14.19.97.78","vhost":"__defaultVhost__","app":"live","stream":"45010000041310000053-1","tcUrl":"rtmp://ip:1935/live","param":"?token=25874920-2ac7-4f3f-aaf3-21cd8e6af403","pageUrl":"","stream_url":"/live/45010000041310000053-1","stream_id":"vid-341487w"}
此时解析 param 或 tcUrl 参数获取推流时传递的key、token等参数即可根据自己的业务逻辑进行授权判断是否合法。
如果合法,回调的接口需要返回 HTTP Code 200并且response内容为整数错误码(0表示成功),其他错误码会断开客户端连接。从而实现发布RTMP流的安全校验的目的。
必须要200ok 0才能成功,否则断开链接