CDN加速

直播拉流转推

更新时间:2021-10-14 15:55:57

一. 功能简介

随着直播的不断发展,直播业务也越发多样化,客户直播平台期望引入第三方平台直播资源。由此引发了直播如何转推到不同平台的问题,针对这个问题,为了满足客户需求,网宿推出直播拉流转推功能,客户可以根据自己的业务需求对部分流进行拉流转推。

二. 使用说明

网宿拉流转推功能通过API接口调用实现,一共分为二种模式:

  实时拉流转推:在某路流已经开始时调用API接口进行拉流转推,从调用API接口的时间开始拉流转推,调用实时拉流转推结束命令时终止拉流转推,只对本次直播生效。

  预设拉流转推:在某路流尚未开始时调用API接口针对这路流做拉流转推预设配置,由用户自定义设置拉流转推的开始时间和结束时间,预设配置存在期间会一直进行拉流转推。

API 具有权限控制,需有网宿已开通账号并以一定规则传入参数方可正确调用,权限控制由 n、r、k 三个参数决定,具体 n、r、k 说明如下:

  1) n:默认设置为Protal平台帐号名;

  2) r:唯一随机字符串,限制最大为10位,推荐使用时间戳;

  3) k:md5验证值。

  MD5 计算方式为: k = md5(r+key),即 r 字符串加上key字符串,得到一个新的字符串,再对该字符串做MD5 计算出新值为k 的值。

  注:key 可向对应客服获取。

  例如:

1、 申请获取到key=012f37a3f2952
2、 随机生成字符串r=1409284800
3、 合并生成字符串new=1409284800012f37a3f2952
4、 使用MD5 计算new 得到 k值b9fed80be752551834eec3e52fa94115

API地址

http://livect.chinanetcenter.com/api/cdn/v2/forwardRequest.action

调用示例

  采用Post方式请求,并且Content-Type 指定为“application/json”,其余方式不接受,具体示例如下:

  URL:http://livect.chinanetcenter.com/api/cdn/v2/forwardRequest.action?n=xxx&r=xx&k=xxx

{ "transcallbackurl": "http://ws.test.com/api/cdn/info.action",
"cmd": "1",
"type": "live",
"list": [
     {
      "id": "545414",
      "src": [
               {
              "url":"http://ws.test.com/live/test1.flv",
               "wmImage":" http://ws.test.com/live/picture1.jpg",                    
		"wmGravity": "TOP_LEFT",
                },
                {
               "url":"http://ws.test.com/live/test2.flv",
               "wmImage":" http://ws.test.com/live/picture2.jpg",                    
		"wmGravity": "TOP_LEFT",
                 }
            ],
       "forward": [
                {
                    "url": "rtmp://ws.test.com/live/test3 "
                },
                {
		    "url": " rtmp://ws.test.com/live/test4 "
                }
            ],
           "start": "1495177025000",
           "end": "1495184225000",		   
        "fops":{
	   "bps": "1200",
           "res": "25",
           "fps": "1280x640",
           "vcodec": "libx265",
           "acodec": "libmp3lame"
},
	"extendParam": {
           "waitCrtUrlFinish": "1"
}
          		   }
	    ]
}

Body参数说明

字段名称 字段类型 字段含义 必填 举例说明
transcallbackurl string 回调地址
cmd string 转推指令 cmd=1 开始转推;cmd=2 结束转推

cmd=2结束转推时需要id和forward参数同时匹配。

type string 转推类型 填写固定值,type = live
list list 推流列表
id string 客户任务标识ID 唯一任务标识ID,ID相同时会先停止原先任务,再进行拉流转推
src list 拉流信息 见下表src参数说明
forward list 转推信息 见下表forward参数说明
id string 客户任务id 56545647,如果传递重复的ID,会先停止原先任务再开启新的转推任务。(建议以时间戳传入)
src list 拉流信息 见下表拉流参数明细
forward list 转推信息 见下表转推参数明细
start string 开始时间 采用unix时间戳方式,位数为13位数字,单位ms.
end string 结束时间 采用unix时间戳方式,位数为13位数字,单位ms.
fops array 编码参数 见下表编码参数明细
extendParam array 扩展参数 见下表编码参数明细

拉流参数说明

字段名称 字段类型 字段含义 必填 举例说明
url string 推流地址 支持填写多个转推地址,且只支持rtmp格式推流
wmImage string 水印图片的URL地址,多个水印分号分隔 http://ws3.test.com/app/picture.jpg(如果url中带&,需要进行url转义)
wmGravity string 水印位置,多个水印分号分隔,与水印url需一一对应 默认TOP_RIGHT。TOP_LEFT = 左上角;TOP_CENTER = 上部居中;TOP_RIGHT = 右上角;CENTER_LEFT = 中部靠左;CENTER = 居中;CENTER_RIGHT = 中部靠右;BOTTOM_LEFT = 左下角;BOTTOM_CENTER =下部居中;BOTTOM_RIGHT = 右下角;

转推参数说明

字段名称 字段类型 字段含义 必填 举例说明
url string 推流地址 推流地址支持填写多个转推地址,且只支持rtmp格式推流
resetUrl string 更换转推地址 cmd = 5 时候生效,表示续播更换转推地址

编码参数说明

字段名称 字段类型 字段含义 必填 举例说明
bps string 码率 1200bps
res string 分辨率 420x720 (中间是小写字母的“x”)
fps string 帧率 25
vcodec string 输出的视频转码方案 默认与输入一致。支持方案:libx264,libx265,libvpx等。
acodec string 输出的音频转码方案 默认与输入一致。支持方案:libmp3lame,libfaac,libvorbis等。

扩展参数说明

字段名称 字段类型 字段含义 必填 举例说明
waitCrtUrlFinish string 切换输入文件列表模式 cmd = 3时使用,是否等待当前播放的url播完。默认为0,表示更新输入文件列表时,立即生效,播新的文件列表。为1时,表示播完当前url,再切换播新的文件列表。

接口响应信息

{	 
"http_code":"200",
"msg":"receive task success!",
"call_time":1479952114000
}
200:成功
400:请求参数错误(参数缺失、时间格式异常)
403:无权限

回调内容

默认不进行回调,若有设置回调地址,则以 jason 形式进行回调,具体回调参数说明如下:

字段名称 字段类型 字段含义 举例说明
id string 客户任务标识ID 若客户有带则回调 id
srcurl string 拉流信息列表 具体拉流列表信息
forwardurl string 转推信息列表 具体转推列表信息
cmd string 转推指令 cmd=1 开始转推;cmd=2 结束转推
code string 转推结果 0:开始推流; 1:推流正常结束; 2:推流外部异常结束; 3:推流内部异常结束 4:轮播转推失败告警,将执行下一个转推文件; 5:轮播转推时,回调文件信息 90:任务不存在,针对cmd2,cmd3,cmd5 91:重复任务,相同forward url的任务不能同时在执行 92:任务执行失败,请重试
msg string 回调信息
event_time Long 事件发生时间

回调实例

{
"msg": "Start pushing!",
"code": "0",
"srcurl": "[{"url":"http://ws.test.com/live/test1.flv"},{"url":" http://ws.test.com/live/test2.flv"}]",
"cmd": "1",
"id": "8fb2eacc",
"forwardurl ": "rtmp://ws.test.com/live/test3"
"event_time":1600402486054
}

三.应用场景

所有直播业务中需要进行拉流转推的客户。

四.注意事项

  1. 实时拉流转推功能,也即利用 cmd 参数实时控制转推开始和结束,cmd=1转推开始,cmd=2转推结束。

  2. 拉流转推,即 type = live 时,源地址只支持一个直播流地址,转推地址可支持多个。

  3. 预设拉流转推功能,也即利用 start 和 end 参数控制转推开始时间和转推结束时间,此功能的前提是 cmd=1。具体参数配置场景如下表:

start end 场景
无配置 无配置 调用时开始转推,调用cmd=2或流结束时停止
无配置 有配置 调用时开始转推,调用cmd=2或end时间时停止
有配置 无配置 start时间时开始转推,调用cmd=2或流结束时停止
有配置 有配置 start时间开始转推,调用cmd=2或end时间停止
  1. start 和 end 的间隔时间不得低于5分钟,end 时间不能晚于当前时间5分钟

  2. 码率的单位为 bps,比如要设置400kbps,则参数 bps=400000。

  3. 转推时若涉及到转码,也即若有设置bps,res,fps等转码参数,则对应的vcodec参数必须配置。

  4. cmd=3适用场景为任务已经开始后需切换播放地址时,因此若预设任务未开始则需先暂停后再更换,且更换转推列表只能更换源地址 src 部分,调用格式与例子相同,可携fops 和 extendParam 参数。

  5. cmd=5适用场景为任务暂停时重新播放,任务暂停分为两种情况,一是转推文件全部播完自然结束暂停,二是调用cmd=2人工暂停,以上两种情况发生后的48小时以内可以调用cmd=5进行续播。第一种情况续播从第一个文件从头开始续播,第二种情况从人工暂停处开始续播,此场景不识别 fops 和 extendParam 参数,因此只要id,src 和 forward可以匹配即可。

  6. 当需要结束某个任务时,携带id和forward参数必须和任务下发时携带的参数保持一致,比如下发任务时,id为123,有多个转推地址比如A,B,C,在结束任务时,需携带同样id=123,对应转推地址进行停止。

  7. 接口调用入参的src和forward后面没有双引号,是数组列表方式的,回调内容中的srcurl和forwardurl有双引号的,是字符串类型。

  8. 接口调用频率限制5分钟100次。