关于直播状态回调
Q:新版直播状态回调在哪里设置?
在域名管理找到RTMP推流域名进行设置,目前只支持RTMP的推流域名的设置
Q:我服务端有什么办法可以知道客户端或者推流端已经在开始推流或者结束了?
您可以在七牛PORTAL的直播产品下的域名配置页面中的进行相关配置
开播回调
当有新的推流连接时,会触发开播回调
断播回调
当推流连接断开时,会触发断播回调
断播延迟
为了避免在快速的断开重连场景,触发较多的回调,可以配置断播延迟。
当推流断开,再重新开始推流,中间中断的时间低于设置的断播延迟时间时,不认为发生了断流,即不会发送通知请求。断播延迟默认为30秒,支持设置范围为1-60秒
回调参数
支持三种类型参数,静态参数、系统内置参数和推流URL中的参数。
系统内置参数
参数Value | 解释 |
---|---|
$(title) | 流名 |
$(remoteIP) | 推流客户端IP |
$(domain) | 推流域名 |
$(localIP) | 服务端IP |
$(timestamp) | 回调的时间戳(秒) |
$(status) | 回调的状态 |
$(sourceURL) | 推流地址, 不包括query参数部分 |
$(path) | 推流地址path参数部分 |
$(startTime) | 推流开始时间时间戳,单位秒 |
$(endTime) | 推流结束时间时间戳,单位秒 |
$(pushDurationS) | 推流持续时间,单位秒 |
$(pushDurationMs) | 推流持续时间,单位毫秒 |
推流URL中的参数以$(_param)表示 假设 推流Url: rtmp://127.0.0.1/hub/stream?aa=123 可以配置 $(_aa) , 这样即可将aa=123这个参数回调至回调地址上
### 回调格式 当前支持如下三种格式 * FORM: HTTP的POST请求,参数以`application/x-www-form-urlencoded`格式在BODY里 * GET: HTTP的GET请求,参数在请求URL中 * JSON: HTTP的POST参数,参数`application/json`格式在BODY里
示例
配置的开播回调地址为http://foo.com/callback
,回调格式FORM,回调参数如下
参数名Key | 参数Value |
---|---|
title | $(title) |
ip | $(remoteIP) |
status | connected |
extra | $(_extra) |
即如下图所示
推流URL为 rtmp://domain/hub/stream1?extra=foo
则回调请求为
POST /callback HTTP/1.1
User-Agent: Go-http-client/1.1
Content-Length: 58
Authorization: Qiniu lfRUng2iBkokHegPMoQuyPaD-l725db2v1GruqD3:4qqs8YOcyJpi_LWXYQvUZe901Rk=
Content-Type: application/x-www-form-urlencoded
X-Reqid: iRMAAGs6zku79-EU
Accept-Encoding: gzip
Host: foo.com
Cache-Control: max-age=259200
Connection: keep-alive
extra=foo&ip=22.73.202.226&status=connected&title=stream1
Q:头信息中 Authentication 字段也可以进行验证吗?
Authentication 字段和客户端签算的 QiniuToken 是一样的,这个也可以用于回调验证
直播回调验证 QiniuToken java 生成方法:
https://github.com/pili-engineering/pili-sdk-java/blob/master/src/main/java/com/qiniu/pili/Mac.java#L23
public String signRequest(URL url, String method, byte[] body, String contentType)
参数解释:
url :客户回调服务器的 url
method :POST
body : 我们回调给客户的 body,一个 json 文件
contentType : application/json
文档反馈
(如有产品使用问题,请 提交工单)