登录控制台
首页 文档中心 直播加速 直播拉流转推

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

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