文档中心 直播分发 直播拉流转推

直播拉流转推

更新时间:2024-03-26 11:23:54

一. 功能简介

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

二. 使用说明

网宿拉流转推功能通过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 start and end interval Too Brief! 开始和结束时间过短 间隔时间不能低于5分钟
params ${field} format is error 字段格式错误 参考接口信息
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位
you do not have right to access this api 没有该接口权限 确认接口权限是否开通,开通会延迟5~10分钟生效
k is error K参数值错误 请确认是否加密正确
frequency is great than limitCount 超过次数限制 访问太过频繁超过次数限制,目前正常是5分钟刷新一次次数限制,可以适当调整
random is repeat 随机数重复 随机数5分钟内重复使用多次被限制,最好一天内不重复使用
user and host not relation 客户无该域名操作权限 先确认是否是走子账户,如果是子账户,请再播控配置中心的域名列表配置上该域名对应的子账户信息
**回调内容**

默认不进行回调,若有设置回调地址,则以 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 回调信息
code 对应的msg
0 Start pushing!
1 Push stream success
2 live_transpush failed, download wmimage failed, live_push failed:xxxxxx, live_pull failed:xxxxx, no have media data,no avc header……等具体的非程序内部问题原因
3 Push stream failed!, Unknown error等
4 具体告警信息,如http://xxxxx/aaaa.mp4: Server returned 404 Not Found,start time more than the duration, end time less than the recordingtime,relofftime invalid,absofftime invalid等
5 list update success,{"url":"xxx","begin_time":111,"end_time":xxx}等
90 task not exists
91 task repeat,task not start!
92 task start delivery failed!
92 task start delivery failed!
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. 预设拉流转推功能,也即利用 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次。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!