直播加速特色功能-直播拉流转推
时间:2020-12-07功能简介
直播发展至今,各直播平台不再局限于自身的资源,经常出现引入第三方平台直播资源的情况,也出现了重要活动的直播可以在多个平台同时观看的场景,由此也产生了直播如何转推到不同平台的问题。针对这个问题,本产品提供直播拉流转推功能,客户可以根据自己的业务需求对部分流进行转推。使用说明
拉流转推功能是指由转推节点拉取客户指定的直播流后,转推给客户指定的推流地址。为方便客户使用,该功能提供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接口时立即开始/结束拉流转推,适用于要转推的直播流已在直播中的情况。API接口:http://livect.chinanetcenter.com/api/cdn/v2/forwardRequest.action?n=xxx&r=xx&k=xxx
调用方式: POST
HTTP头部: Content-Type:application/json
Body内容:
开始转推
{ "transcallbackurl": "http://www.callback.com/api", "cmd": "1", "type": "live", "list": [{ "id": "123", "src": [{ "url": "http://www.pull.com/live/abc.flv" }], "forward": [{ "url": "rtmp://www.push1.com/live/test" }, { "url": "rtmp://www.push2.com/live/test2" }] }] }结束转推
{ "transcallbackurl": "http://www.callback.com/api", "cmd": "2", "type": "live", "list": [{ "id": "123", "src": [{ "url": "" }], "forward": [{ "url": "rtmp://www.push1.com/live/test" }, { "url": "rtmp://www.push2.com/live/test2" }] }] }
Body参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
transcallbackurl | string | 回调地址 | 否 | |
cmd | string | 转推指令 | 是 | cmd=1 开始转推;cmd=2 结束转推
cmd=2结束转推时需要id和forward参数同时匹配。 |
type | string | 转推类型 | 是 | 填写固定值,type = live |
list | list | 推流列表 | 是 |
list参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
id | string | 客户任务标识ID | 是 | 唯一任务标识ID,ID相同时会先停止原先任务,再进行拉流转推 |
src | list | 拉流信息 | 是 | 见下表src参数说明 |
forward | list | 转推信息 | 是 | 见下表forward参数说明 |
src参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
url | string | 直播拉流地址 | 是 | 支持RTMP、HTTP flv、HLS、RTSP四种拉流格式,但使用HLS时不支持m3u8再嵌套m3u8. |
forward参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
url | string | 推流地址 | 是 | 支持填写多个转推地址,且只支持rtmp格式推流 |
定时转推
调用API接口定时开始/结束拉流转推的时间配置,到指定时间后才开始/结束拉流转推,适用于要转推的直播流未开播的情况。API接口:http://livect.chinanetcenter.com/api/cdn/v2/forwardRequest.action?n=xxx&r=xx&k=xxx
调用方式: POST
HTTP头部: Content-Type:application/json
Body内容:
定时转推
{ "transcallbackurl": "http://www.callback.com/api", "cmd": "1", "type": "live", "list": [{ "id": "123", "src": [{ "url": "http://www.pull.com/live/abc.flv" }], "forward": [{ "url": "rtmp://www.push1.com/live/test" }, { "url": "rtmp://www.push2.com/live/test2" }], "start": "1540216800000", "end": "1540220400000" }] }
Body参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
transcallbackurl | string | 回调地址 | 否 | |
cmd | string | 转推指令 | 是 | 填写固定值,cmd=1 |
type | string | 转推类型 | 是 | 填写固定值,type = live |
list | list | 推流列表 | 是 |
**list参数说明**
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
id | string | 客户任务标识ID | 是 | 唯一任务标识ID,在cmd=1时ID相同时会先停止原先任务,再进行拉流转推。 |
src | list | 拉流信息 | 是 | 见下表src参数说明 |
forward | list | 转推信息 | 是 | 见下表forward参数说明 |
start | int | 开始转推时间 | 是 | 13位unix时间戳,start小于当前时间时,则从当前时间立即开始转推。 |
end | int | 结束转推时间 | 是 | 13位unix时间戳,end必须晚于start时间5分钟以上,并且晚于当前时间5分钟以上。 |
**src参数说明**
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
url | string | 直播拉流地址 | 是 | 支持RTMP、HTTP flv、HLS、RTSP四种拉流格式,但使用HLS时不支持m3u8再嵌套m3u8. |
**forward参数说明**
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
url | string | 推流地址 | 是 | 支持填写多个转推地址,且只支持rtmp格式推流 |
结束转推
开启定时转推任务之后,在转推任务结束时间前,仍可调用结束转推命令来终止该转推任务。结束转推命令不带start和end参数。{ "transcallbackurl": "http://www.callback.com/api", "cmd": "2", "type": "live", "list": [{ "id": "123", "src": [{ "url": "" }], "forward": [{ "url": "rtmp://www.push1.com/live/test" }, { "url": "rtmp://www.push2.com/live/test2" }] }] }
转码或加水印
接口除了实现转推功能外,通过携带相应的转码或加水印参数,还支持对转推流进行转码和添加水印处理。Body内容:
{ "transcallbackurl": "http://www.callback.com/api", "cmd": "1", "type": "live", "list": [{ "id": "123", "src": [{ "url": "http://www.pull.com/live/abc.flv", "wmimage": "http://ws.test.com/live/picture1.jpg", "wmgravity": "TOP_LEFT" }], "forward": [{ "url": "rtmp://www.push1.com/live/test" }, { "url": "rtmp://www.push2.com/live/test2" }], "fops": { "bps": "1200", "res": "25", "fps": "1280x640", "vcodec": "libx265", "acodec": "libmp3lame" } }] }
list参数说明
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
fops | Array | 编码参数 | 否 |
**fops参数说明**
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
bps | string | 码率(bps) | 否 | 1200bps |
res | string | 分辨率 | 否 | 420x720 (中间是小写字母的“x”) |
fps | string | 帧率(fps) | 否 | 25 |
vcodec | string | 视频编码方案 | 否 | libx264,支持方案:libx264,libx265,libvpx等。当拉流为RTSP或需同时添加水印时固定填写为 libx264。 |
acodec | string | 音频编码方案 | 否 | Libfaac,支持方案:libmp3lame,libfaac,libvorbis等。 |
wsaf | string | 去伪影 | 否 | average,当前仅支持配置 average。 |
wssr | int | 超分 | 否 | 1,2,3 支持1倍,2倍,3倍超分。 |
**src参数说明**
字段名称 | 字段类型 | 字段含义 | 必填 | 举例说明 |
wmimage | string | 水印图片的URL地址 | 否 | 如果url中带&,则需要进行url转义 |
wmgravity | string | 水印位置 | 否 | TOP_LEFT 左上角;TOP_CENTER 上部居中;TOP_RIGHT 右上角;CENTER_LEFT 中部靠左;CENTER 居中;CENTER_RIGHT 中部靠右;BOTTOM_LEFT 左下角;BOTTOM_CENTER 下居中;BOTTOM_RIGHT 右下角。 |
说明:水印格式支持png、jpg、bmp,转码或加水印命令中,其他携带的参数说明参考上文说明。
接口响应信息
返回状态码说明:200: 接口调用成功;
400: 请求参数错误(参数缺失、时间格式异常等)
403: 没有请求权限;
转推回调信息
{ "msg": "Start pushing!", "code": "0", "srcurl": "[{"url":"http://www.pull.com/live/abc.flv"}]", "cmd": "1", "id": "124", "forwardurl": "rtmp://www.push1.com/live/test" }
字段名称 | 字段类型 | 字段含义 | 举例说明 |
id | string | 客户任务标识ID | 若客户有带则回调 id |
srcurl | string | 拉流信息列表 | |
forwardurl | string | 转推信息列表 | |
cmd | string | 转推指令 | cmd=1 开始转推;cmd=2 结束转推; |
code | string | 转推结果 | 0:成功;1:失败 ;2:告警 |
msg | string | 回调信息 |
说明:转推回调后,需要对端接口的服务器响应200状态码和body内容,body内容不做详细要求,但不能为空。
应用场景
所有直播业务中需要进行拉流转推的客户。注意事项
1) 拉流URL只支持配置一路,转推地址则支持配置多路。2) 转推时若涉及到转码,也就是如果有设置bps,res,fps等转码参数,则对应的vcodec参数必须填写。
3) 转推是拉流或转推超时,服务器会进行重试,默认超时等待时间10S,默认重试3次。
4) 当需要结束某个转推任务时,携带id和forward参数必须和开始转推任务携带的参数保持一致,比如开始转推时,id为123,转推地址为 A,在结束任务时,需携带同样id=123和转推地址A;有多个转推地址的情况,可以停止其中一个或多个。
5) 接口调用入参的src和forward后面没有双引号,是数组列表方式的,回调内容中的srcurl和forwardurl有双引号的,是字符串类型。
6) 转推过程中,如果直播流结束,则转推也会自动结束。
7) 接口调用限制5分钟100次。
本页目录