控制台
账户信息
认证信息
费用中心
订单管理
消息管理
退出登录
首页 文档中心 直播加速 直播拉流转推

直播加速特色功能-直播拉流转推

作者:蔚可云 时间: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次。