最近更新时间:2024-03-25 19:48:30
金山云支持MD5防盗链简单鉴权,此服务需联系技术支持开通。
推流示例
rtmp://uniquename.uplive.ks-cdn.com/live/streamname?t=1560096763&k=7197d55ace73b7d8
参数说明
参数名 | 描述 |
---|---|
t | 用来控制失效时间,unix10位时间戳,1970年1月1日以来的秒数。 |
k | 固定长度16,通过md5算法计算出的验证串, 数字和小写英文字母混合0-9a-z,取MD5值(固定长度32)中间的16位(即第9位到24位) |
鉴权方式
服务端拿到请求后,首先会判断当前时间是否大于请求中的参数t,如果大于,则认为过期失效并返回HTTP 403错误。如果当前时间小于参数t,则构造出一个同样的字符串。然后使用MD5算法算出hashvalue再和请求中带来的参数k进行比对。比对结果一致,则认为鉴权通过。否则鉴权失败,返回HTTP 403错误。
防盗链算法
hashvalue取MD5(秘钥+流名+t参数)计算得出的MD5值中间16位,即第9位到24位。
示例说明
1.用户秘钥设为:123456(用户提供);支持字符:数字,字母(区分大小写),最长32位。
2.主播推流url
rtmp://yourdomain.com/live/stream?t=1560096712&k=4f88e741140240e2
时间戳t参数设为:1560096712
3.服务器通过计算得出hashvalue
tmp_md5=md5(123456stream1560096712)=c628321f4f88e741140240e2e5c5bd90
hashvalue取计算结果中间16位: 4f88e741140240e2
hashvalue与 url中k参数4f88e741140240e2比较,完全匹配,鉴权校验通过;不匹配则拒绝访问。
金山云支持在客户自己的鉴权服务器使用自身鉴权算法鉴权,此服务需联系技术支持开通。
推流示例
rtmp://uniquename.uplive.ks-cdn.com/live/stream?token=3dKBiljAauSbh
开启外部鉴权后,推流地址携带参数token为用户携带自定义鉴权字符串;金山云支持以POST方式访问客户鉴权服务器。
金山云支持以域名维度配置IP黑白名单,可配置单个IP或IP段;当配置IP段黑白名单时,需将IP段计算成掩码;此服务需联系技术支持开通。
该服务用于提交一个RTMP直播流推送请求,对于推流的返回描述在_result中以amf编码返回。
请求示例
rtmp://uniquename.uplive.ks-cdn.com/live/stream?signature=vU9XqPLcXd3nWdlfLWIhruZrLAM%3D&accesskey=P3UPCMORAFON76Q6RTNQ&expire=1436976000[&nonce=4e1f2519c626cbfbab1520c255830c26]
状态码
Code | SubCode | Description |
---|---|---|
0 | 0 | Publish Success (推流成功) |
1 | 0 | Non-Exist Publish Domain(非法推流域名) |
2 | 0 | Non-Exist Application(应用名不存在) |
3 | 0 | Already Exist Stream Name(此流已存在) |
4 | 0 | Forbidden By Blacklist(黑名单拒绝) |
5 | 0 | Authentication Failed(鉴权失败, 原因未知) |
5 | 1 | Accesskey Or Signature Not Exist(鉴权失败, 鉴权参数缺失) |
5 | 2 | URL Expired(鉴权失败, 签名超时) |
请求描述
Connect
(Invoke) "publish"
(Transaction ID) 1.0
(Object1) {
app: "app",
flashVer: "MAC 10,2,153,2",
swfUrl: null,
tcUrl:"rtmp://*.uplive.ks-cdn.com/live/stream?signature=vU9XqPLcXd3nWdlfLWIhruZrLAM%3D&accesskey=P3UPCMORAFON76Q6RTNQ&expire=1436976000[&nonce=4e1f2519c626cbfbab1520c255830c26]",
fpad: false,
capabilities: 9947.75 ,
audioCodecs: 3191,
videoCodecs: 252,
videoFunction: 1,
pageUrl: null,
objectEncoding: 3.0 }
Result
(Invoke) "_result"
(Transaction ID) 1.0
(Object2){
code: 0,
subCode: 0,
description: "Publish Success"}
该服务用于提交一个RTMP直播流播放请求
请求示例
rtmp://***.rtmplive.ks-cdn.com/live/stream
状态码
Code | SubCode | Description |
---|---|---|
0 | 0 | Play Success (拉流成功) |
1 | 0 | Non-Exist Play Domain(非法拉流域名) |
2 | 0 | Non-Exist Application(应用名不存在) |
3 | 0 | Non-Exist Stream Name(此流不存在) |
请求描述
Connect
(Invoke) "play"
(Transaction ID) 1.0
(Object1) {
app: "app",
flashVer: "MAC 10,2,153,2",
swfUrl: null,
tcUrl:"rtmp://*.rtmplive.ks-cdn.com/live/stream",
fpad: false,
capabilities: 9947.75 ,
audioCodecs: 3191,
videoCodecs: 252,
videoFunction: 1,
pageUrl: null,
objectEncoding: 3.0 }
Result
(Invoke) "_result"
(Transaction ID) 1.0
(Object2){
code: 0,
subCode: 0,
description: "Play Success"}
形如 GET /live/stream/index.m3u8,此请求提交了一个HLS请求。
HLS域名:支持流名.m3u8;如需配置为流名/playlist.m3u8,请联系技术支持。
请求示例
GET /live/stream/index.m3u8 HTTP/1.1
Host: ***.hlslive.ks-cdn.com
Date:Wed, 28 Oct 2009 22:32:00 GMT
成功响应示例
HTTP/1.1 200 OK Content-Length: length
Content-Type: text/plain
Date:Wed, 28 Oct 2009 22:32:00 GMT
Server: Nginx
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:2
#EXTINF:2.000,
172278810.ts
#EXTINF:2.000,
172458810.ts
#EXTINF:1.315,
172638810.ts
错误响应示例
1.鉴权失败
HTTP/1.1 403 Forbidden
Content-Length: length
Content-Type: text/plain
Date: Wed, 28 Oct 2009 22:32:00 GMT
Server: Nginx
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AuthencationFailed</Code>
<Message>Non Exist Signature or Accesskey</Message>
</Error>
2.应用不存在
HTTP/1.1 403 Forbidden
Content-Length: length
Content-Type: text/plain
Date: Wed, 28 Oct 2009 22:32:00 GMT
Server: Nginx
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NonExistApplication</Code>
</Error>
3.流不存在
HTTP/1.1 403 Forbidden
Content-Length: length
Content-Type: text/plain
Date: Wed, 28 Oct 2009 22:32:00 GMT
Server: Nginx
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>NonExistStreamName</Code>
</Error>
返回错误描述
Error | Description |
---|---|
AuthencationFailed | 鉴权失败 |
NonExistApplication | application应用名不存在 |
ExistStreamName | publish流名已存在 |
请求示例
GET /live/stream.flv HTTP/1.1
Host: ***.hdllive.ks-cdn.com
Date:Wed, 28 Oct 2009 22:32:00 GMT
错误响应示例
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: video/x-flv
Connection: close
Expires: -1
Pragma: no-cache
[Media Data]
纯净模式