信息提交接口规范

一、 参数规范

  • 请求 URL:

https://vsafe.ilivedata.com/api/v1/livevideo/check/submit

  • 接口描述:

提交视频直播流相关信息接口,信息提交后,会对视频进行截图检测,检测结果需自行调用视频结果获取接口。

  • 支持格式:

检测接口支持的流媒体协议如下:rtp、srtp、rtmp、rtmps、mmsh、mmst、hls、http、tcp、https等。

  • HTTP 请求Header:
Header 描述
Content-Type application/json;charset=UTF-8 请求体类型
Accept application/json;charset=UTF-8 接受的返回类型
X-AppId 项目的唯一标识,此值是 <控制台-服务配置>中的项目编号
X-TimeStamp 请求的UTC时间戳。需要把时间戳按W3C标准格式化,例如: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime)。
Authorization 签名值
  • 请求方法:POST

  • 请求体JSON对象:

参数 必需 类型 描述
video 必需 String 直播视频的url地址
frequency 可选 Number 默认截帧设置,默认5秒截图检测一次. 可设置范围为1~60秒
segmentSeconds 可选 Number 音频片段时长,默认值等于frequecy. 可设置范围为1~60秒,且必须是frequency整数倍
lang 可选 String 视频中音频语种,不指定默认中文(zh-CN)
userId 可选 String 唯一的终端用户ID。 用户ID应当不超过32个字符。
userIP 可选 String 用户IP地址
did 可选 String 用户设备ID
dtype 可选 String 用户设备类型:1:iPhone 2:android 3: ipad 4:wphone 5: pc 6:web 7:wap
callbackRegion 可选 String 回调区域:默认cn,可选cn,us,ap。不给或不在取值范围内默认使用cn区域发起回调
callbackUrl 可选 String 回调url:http协议
callbackSecretKey 可选 String 回调密钥,可自行定义,需要在回调验签方式使用密钥一致,否则无法验证回调数据是否被篡改
  • 请求体示例:

    JSON Response
          {
          "video":"http://xxx.xxx.com/xxxx",
          "userId": "testUser"
            }     
    
  • 请求签名:

当用户请求Video Submit API时,可以使用appId和secretKey(从“控制台-服务 配置“中获取)对请求做签名,当API收到带签名信息的请求之后,将使用相同的算法验证签名,如果发现签名不一致,API将会返回401给用户。

如果API验证签名一致,且appId对应的用户有权限操作请求的资源,则请求成功,否则API返回401。

  • 通过 HTTP 请求 Header 发送签名

方法: 在请求中加入名为 Authorization 的 Header,值为签名值。如下:

 Authorization: Njl86M/jY6zZaZoGhZdGO+GI/8+yGFECusGH1yQHUFE=
  • 签名计算方法
  1. 构造规范化的请求字符串(Canonicalized Query String)::

将请求体JSON字符串以UTF-8字符编码做sha256编码后转换为16进制字符串(注意不是Base64)

CanonicalizedQueryString = hex(sha256(jsonBody))

  1. 构造被签名字符串 StringToSign ("\n" 代表ASCII里的换行符)
    StringToSign = HTTPMethod + "\n" +
                   HostHeaderInLowercase + "\n" +
                   HTTPRequestURI + "\n" +
                   CanonicalizedQueryString <从上一步得到> + "\n" +
                   "X-AppId:" + SAME_APPID_IN_HEADER + "\n" +
                   "X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER

HTTPRequestURI是请求URI的绝对路径,不包含请求串。如果HTTPRequestURI为空,也要保留一个正斜杠 ( / )

使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码 (HMAC),然后计算签名。

  1. StringToSign作为签名字符串,secretKey作为秘钥,SHA256作为哈希算法

    有关 HMAC 的更多信息,请参阅 https://tools.ietf.org/html/rfc2104。
    
  2. 将上一步的结果转换为BASE64串

  3. 将BASE64串放入HTTP请求Header的Authorization

  • 签名示例

下面是appId & secretKey & video的示例

appId=1000
secrectKey=d9e23d93053f49ade2f8fce185acedd4
video_url="http://xxx.xxx.com/xxxx"

下面是示例请求体

{
 "video":"http://xxx.xxx.com/xxxx",
 "userId": "12345678"
}

生成CanonicalizedQueryString

b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118

生成StringToSign

POST
vsafe.ilivedata.com
/api/v1/video/check/submit
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
X-AppId:1000
X-TimeStamp:2020-07-31T07:59:03Z

HMAC计算得到的签名

H0ZXsKUaiRotpxSiXW6+RgKRwnxHXy3qwlVzavs9iHo=