推拉流接入

最近更新时间:2020-08-10 11:21:12

推流接入

视频云鉴权

简单鉴权

金山云支持MD5防盗链简单鉴权,此服务需联系技术支持开通。

推流示例

rtmp://uniquename.uplive.ks-cdn.com/live/streamname?t=1560096763&k=7197d55ace73b7d8

参数说明

参数名 描述
t 用来控制失效时间,unix10位时间戳,1970年1月1日以来的秒数。
k 通过md5算法计算出的验证串, 数字和小写英文字母混合0-9a-z,固定长度16,取中间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段黑白名单时,需将IP段计算成掩码;此服务需联系技术支持开通。

直播推拉流服务

RTMP推流

该服务用于提交一个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直播流播放请求

请求示例

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"}

HLS直播拉流

形如 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流名已存在

HTTP+FLV直播拉流

请求示例

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]

金山云,开启您的云计算之旅

免费注册