@sewise-dev
2017-10-13T13:10:40.000000Z
字数 5104
阅读 665
云转码API
编号 | 版本 | 说明 | 作者 | 创建日期 | 修改日期 |
---|---|---|---|---|---|
1 | v1.1 | 创建文档 | zewise | 2017-09-18 | 2017-09-20 |
|http post /api/addtask|
参数 值 类型 说明 必选 taskid 1111 字符串 json:"taskid,omitempty"
必须要唯一是 callurl http:ip/api/callback 字符串 json:"callurl,omitempty"
完整的回调url是 fileinfo 详见TransCodecInfo结构体 json:"fileinfo,omitempty"转码文件信息
是
参数 值 类型 说明 必选 in 详见FileInfo 输入信息 json:"in"
,完整文件的信息,程序会自动填入,源文件路劲必填是 out 详见FileInfo 输入信息 json:"out"
,目标文件信息是
参数 值 类型 说明 必选 format 输出格式[ts mp4 flv] string json:"format,omitempty"
//文件格式in:可选 out:必选 filepath string json:"filepath,omitempty"
//文件存储路径是 videoinfo 详见VideoCodec json:"videoinfo,omitempty"
//视频编码信息否 audioinfo 详见AudioCodec json:"audioinfo,omitempty"
//音频编码信息否
参数 值 类型 说明 必选 action 0 off 1 codec 2 copy int json:"action,omitempty"
in:无效 out:必选 vcodec 默认值为H264: 28 int json:"vcodec,omitempty"
//编码id否 codeclevel int json:"codeclevel,omitempty"
//编码等级否 Profile 1:basic 2: main 3:high int json:"profile,omitempty"
//编码等级否 Usage QUALITY=1, SPEED=2, BALANCE=3 int json:"usage,omitempty"
// QUALITY, SPEED, BALANCE否 width int json:"width,omitempty"
//宽否 height int json:"height,omitempty"
//高否 goptime 1 second int json:"goptime,omitempty"
//gop大小,单位秒否 goppicsize int json:"goppicsize,omitempty"
//gop大小否 goprefdist int json:"goprefdist,omitempty"
//gop间距否 idrinterval int json:"idrinterval,omitempty"
//关键帧间距否 ratecontrolmethod 保留 int json:"ratecontrolmethod,omitempty"
//码率控制方式否 frameRate int json:"frameRate,omitempty"
//帧率否 bitRate int json:"bitRate,omitempty"
//码率否 deinterlace bool json:"deinterlace,omitempty"
//去隔行否 scantype bool json:"scantype,omitempty"
//底部和顶部否 watermark 详见Watermark json:"watermark,omitempty"
//水印信息否
参数 值 类型 说明 必选 mode 0:off 1 :左上角 2:右下角 int json:"Mode"
// 0 off 1 left 2 bottom否 logo string json:"logo"
logo图片地址Mode开启时必选 offsetx int json:"offsetx"
水印坐标xMode开启时必选 offsety int json:"offsety"
水印坐标yMode开启时必选
参数 值 类型 说明 必选 action 0 off 1 codec 2 copy int json:"action,omitempty"
in:无效 out:必选 acodec 默认AAC: 0x15002 int json:"acodec,omitempty"
//编码id否 bitRate int json:"bitRate,omitempty"
//码率否 codeclevel 保留 int json:"codeclevel,omitempty"
暂时没用//编码等级 main high否 numchannel 0 2 4 int json:"numchannel,omitempty"
//声道否 samplefrequency 48100 int json:"samplefrequency,omitempty"
//音频采样率否
|http post /api/deltask|
参数 值 类型 说明 必选 taskid "1111" 字符串 必须要唯一 是
|http post /api/status|
参数 值 类型 说明 必选 taskid "1111" 字符串 必须要唯一 是
|callback url|
|开始、进度、结束、错误回调|
参数 值 类型 说明 必选 taskid "1111" 字符串 必须要唯一 是 event "slice" "code" "merge" "complete" string slice:切割,code:分片转码,merge:视频合成,complete:完成 是 errorcode string 失败时的错误原因, 成功为空 是 precent 80% int 任务完成的进度 否 duration 10s int 任务完成时的耗时 否
{
"taskid":"1111",
"fileinfo":{
"in":{
"Format":"flv",
"Filepath":"/home/video/test.mp4",
"videoinfo":{
"action":0,
"vcodec":28,
"codeclevel":1,
"profile":2,
"usage":0,
"width":1920,
"height":1080,
"goppicsize":60,
"goprefdist":25,
"idrinterval":0,
"ratecontrolmethod":1,
"frameRate":25,
"bitRate":2000,
"deinterlace":false,
"scantype":true
},
"audioinfo":{
"action":0,
"acodec":228,
"bitRate":64,
"codeclevel":3,
"numchannel":2,
"samplefrequency":44100
}
},
"out":{
"Format":"mp4",
"Filepath":"/home/video/test1.mp4",
"videoinfo":{
"action":1,
"vcodec":28,
"codeclevel":1,
"profile":2,
"usage":2,
"width":1080,
"height":720,
"goppicsize":120,
"goprefdist":25,
"idrinterval":0,
"ratecontrolmethod":3,
"frameRate":30,
"bitRate":1500,
"deinterlace":false,
"scantype":true,
"watermark":{
"mode":1,
"logo":"/cammer/SEWISE3.png",
"offsetx":10,
"offsety":10
}
},
"audioinfo":{
"action":1,
"acodec":228,
"bitRate":32,
"codeclevel":1,
"numchannel":2,
"samplefrequency":9600
}
}
}
}
示例:
curl -H "Content-Type: application/json" -X POST --data "{\"taskid\":\"123\",\"fileinfo\":{\"in\":{\"Filepath\":\"/cammer/video/001.MTS\"},\"out\":{\"Format\":\"ts\",\"Filepath\":\"/home/video/test1.mp4\",\"videoinfo\":{\"action\":1,\"goptime\":2,\"watermark\":{\"mode\":0,\"logo\":\"/cammer/SEWISE3.png\",\"offsetx\":10,\"offsety\":10}},\"audioinfo\":{\"action\":1,\"acodec\":86018}}}}" http://127.0.0.1:8080/api/addtask
(1)微录播音视频转码json: 1秒gop
{"taskid":"123","fileinfo":{"in":{"Filepath":"/cammer/video/001.MTS"},"out":{"Format":"mp4","Filepath":"/home/video/test1.mp4","videoinfo":{"action":1,"vcodec":28,"goptime":1},"audioinfo":{"action":1,"samplefrequency":44100,"acodec":86018}}}}
(2)微录播转码音频(码率默认、采样率),视频拷贝
{"taskid\":"123","fileinfo":{"in":{"Filepath":"/cammer/video/001.MTS"},"out":{"Format":"mp4","Filepath":"/home/video/test1.mp4","videoinfo":{"action":2},"audioinfo":{"action":1,"samplefrequency":44100,"acodec":86018}}}}
(3)转码视频,音频拷贝 带水印
{"taskid":"123\","fileinfo":{"in":{"Filepath":"/cammer/v"Filepath":"/home/video/test1.mp4","videoinfo":{"action":1,"vcodec":86018,"goptime":1, "watermark":{"mode":0,"logo":"/cammer/SEWISE3.png","offsetx":10,"offsety":10}},"audioinfo":{"action\":2}}}}
body 参数 json
{
"taskid":"1111", 字符串: 必须要唯一
}
body 参数 json
{
"taskid":"1111", 字符串: 必须要唯一
}
//接口定义之任务回调 开始、进度、结束、错误回调
//http post //callback
body 参数 json
//slice: 1. errorcode
//code: 1. videocode_status [Precent] 2. audiocode_status [precent] errorcode
//merge: 1. errorcode
//complete: 1. Duration 2. errorcode
{
"taskid":1111,
"event":"slice",
"errorcode":"slice error",
"precent":80, //80%
"duration":10 //second
}