更新时间:2023-05-16 17:33:49
随着直播的不断发展,直播业务也越发多样化,客户直播平台期望引入第三方平台直播资源。由此引发了直播如何转推到不同平台的问题,针对这个问题,为了满足客户需求,网宿推出直播拉流转推功能,客户可以根据自己的业务需求对部分流进行拉流转推。
网宿拉流转推功能通过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": "1280x640", "fps": "25", "vcodec": "libx265", "acodec": "libmp3lame" "forced_gopInterval":"3000" }, "extendParam": { "waitCrtUrlFinish": "1" } } ] }
Body参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
transcallbackurl | string | 回调地址 | 否 | http://test/api/cdn/info.action,如果不需要回调,可以不传 |
cmd | string | 转推指令 | 是 | cmd=1 开始转推;cmd=2 结束转推cmd=2结束转推时需要id和forward参数同时匹配。 |
type | string | 转推类型 | 是 | video:点播 live:直播 类型最好跟实际一致,否则转推可能会失败 |
list | list | 转推列表 | 是 |
list参数说明
id | string | 客户任务标识ID | 是 | 唯一任务标识ID,ID相同时会先停止原先任务,再进行拉流转推;最大32个字符 |
src | list | 拉流信息 | 是 | 见下表拉流参数明细 |
forward | list | 转推信息 | 是 | 见下表转推参数明细 |
start | string | 开始时间 | 否 | 采用unix时间戳方式,位数为13位数字,单位ms. |
end | string | 结束时间 | 否 | 采用unix时间戳方式,位数为13位数字,单位ms. |
fops | array | 编码参数 | 否 | 见下表fops参数明细 |
extendParam | array | 扩展参数 | 否 | 见下表extendParam参数明细 |
src拉流参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
url | string | 拉流地址 | 是 | 支持直播流和点播流;直播:只能支持一个url,支持HLS、HDL、RTMP、RTSP拉流协议;点播流支持多个url。支持HLS、MP4、FLV点播文件 |
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 = 右下角; |
wmPosition | string | 动态水印位置,多个水印分号分隔,与水印url需一一对应 | 否 | 水印位置: 按照百分比,30%x40%表示 从(x,y)x=0,y=0开始宽偏离30%,高偏离40%作为水印起点 其中x是小写的字母X,中间不能有空格;wmPosition与wmGravity互斥,如果同时存在,系统不报错,只透传百分比只能取[0,99]的整数 |
forward转推参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
url | string | 推流地址 | 是 | 推流地址支持填写多个转推地址,且只支持rtmp格式推流 |
resetUrl | string | 更换转推地址 | 否 | cmd = 5 时候生效,表示续播更换转推地址 |
fops编码参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
bps | string | 码率 | 否 | 1200bps |
res | string | 分辨率 | 否 | 420x720 (中间是小写字母的“x”) |
fps | string | 帧率 | 否 | 25 |
vcodec | string | 输出的视频转码方案 | 否 | 默认与输入一致。支持方案:libx264,libx265,libvpx等。 |
acodec | string | 输出的音频转码方案 | 否 | 默认与输入一致。支持方案:libmp3lame,libfaac,libvorbis等。 |
bufferTime | string | HLS直播缓冲时间(转推前) | 否 | 单位秒,默认不缓冲。仅直播转推支持。 |
forced_gopInterval | string | 指定关键帧时间间隔 | 否 | 单位为:ms |
扩展参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
waitCrtUrlFinish | string | 切换输入文件列表模式 | 否 | cmd = 3时使用,是否等待当前播放的url播完。默认为0,表示更新输入文件列表时,立即生效,播新的文件列表。为1时,表示播完当前url,再切换播新的文件列表。 |
接口响应信息
{ "http_code":"200", "msg":"receive task success!", "call_time":1479952114000 } 200:成功 400:请求参数错误(参数缺失、时间格式异常) 403:无权限
响应内容列表
HTTP字段 | http_code字段 | msg字段 | 说明 | 操作 |
400 | 1001 | cmd is error | cmd 字段错误 | Cmd 只支持 1,2,3,5 |
type is error | type字段错误 | type只支持live,video | ||
list is null | list为空 | 必填字段 | ||
params id is null | Id为空 | 必填字段 | ||
params src list is null | src的列表为空 | 必填字段 | ||
params src num is too long | Src列表过长 | 已超过限制,缩小即可。当前最长800 | ||
params src length is too long | Src列表的内容信息字符数超过限制(原始请求没传的参数会自动填充为空,故实际长度要略长于原始长度) | 已超过限制,缩小即可。当前最大204800 | ||
params src is error | 源地址为空 | 必填字段 | ||
params absofftime is error | 格式错误 | 参考接口信息 | ||
params relofftime is error | 格式错误 | 参考接口信息 | ||
params forward list is null | forward的列表为空 | 必填字段 | ||
params forward is error | Forward的url为空 | 必填字段 | ||
params start format is error | 格式错误 | 参考接口信息 | ||
params end format is error | 格式错误 | 参考接口信息 | ||
params end plan is error! | 结束时间错误 | 结束时间不能低于当前时间 | ||
params ${field} format is error/td> | 字段格式错误 | 参考接口信息 | ||
403 | 1002 | apiName, n, r, k not exist or empty | 鉴权参数缺失 | 确认参数完整性 |
random.length gt 32 or key.length ne 32 | r字段长度和k字段长度错误 | 确认r字段长度不能大于32位,k字段必须等于32位 |
默认不进行回调,若有设置回调地址,则以 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 }
所有直播业务中需要进行拉流转推的客户。
实时拉流转推功能,也即利用 cmd 参数实时控制转推开始和结束,cmd=1转推开始,cmd=2转推结束。
预设拉流转推功能,也即利用 start 和 end 参数控制转推开始时间和转推结束时间,此功能的前提是 cmd=1。具体参数配置场景如下表:
start | end | 场景 |
无配置 | 无配置 | 调用时开始转推,调用cmd=2或流结束时停止 |
无配置 | 有配置 | 调用时开始转推,调用cmd=2或end时间时停止 |
有配置 | 无配置 | start时间时开始转推,调用cmd=2或流结束时停止 |
有配置 | 有配置 | start时间开始转推,调用cmd=2或end时间停止 |
start 和 end 的间隔时间不得低于5分钟,end 时间不能晚于当前时间5分钟
码率的单位为 bps,比如要设置400kbps,则参数 bps=400000。
转推时若涉及到转码,也即若有设置bps,res,fps等转码参数,则对应的vcodec参数必须配置。
cmd=3适用场景为任务已经开始后需切换播放地址时,因此若预设任务未开始则需先暂停后再更换,且更换转推列表只能更换源地址 src 部分,调用格式与例子相同,可携fops 和 extendParam 参数。
cmd=5适用场景为任务暂停时重新播放,任务暂停分为两种情况,一是转推文件全部播完自然结束暂停,二是调用cmd=2人工暂停,以上两种情况发生后的48小时以内可以调用cmd=5进行续播。第一种情况续播从第一个文件从头开始续播,第二种情况从人工暂停处开始续播,此场景不识别 fops 和 extendParam 参数,因此只要id,src 和 forward可以匹配即可。
当需要结束某个任务时,携带id和forward参数必须和任务下发时携带的参数保持一致,比如下发任务时,id为123,有多个转推地址比如A,B,C,在结束任务时,需携带同样id=123,对应转推地址进行停止。
接口调用入参的src和forward后面没有双引号,是数组列表方式的,回调内容中的srcurl和forwardurl有双引号的,是字符串类型。
接口调用频率限制5分钟100次。