@sewise-dev
2017-01-03T09:43:32.000000Z
字数 16868
阅读 670
VPaas组件化
媒资平台
编号 | 版本 | 说明 | 作者 | 日期 |
---|---|---|---|---|
1 | v1.0 | 1.创建文档 | Seven | 2016-12-14 |
2 | v1.1 | 1.1.完善文档 | jacky | 2016-12-29 |
凡是要使用应用能力的接口,双方需通过对比加密sign值,进行安全校验,否则接口不能使用。
加密算法:
sign = md5(shal(appid + time + random) + key);
每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。
返回码 | 说明 |
---|---|
-1 | 系统繁忙,此时请开发者稍候再试 |
200 | 请求成功 |
403 | 禁止访问 |
404 | 异常错误 |
500 | 数据验证错误 |
40001 | 不合法的凭证,或者access_token无效。 |
40004 | 不合法请求 |
HTTP请求状态返回格式
返回字段 | 字段类型 | 说明 |
---|---|---|
status | Integer | 请求返回码(详细请见状态表) |
message | String | 返回描述 |
data | Array | 返回结果 |
错误样例
{
"status": 40013,
"message": {"0":"invalid appid"}
}
成功样例
{
"status": 200,
"data": {"access_token":"ACCESS_TOKEN","expires_in":7200}
}
/v1/media/createNode
application/json
POST
参数 必选 类型 说明 RequestBody name 是 String 目录名称 parentId 否 Int 父节点id
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
Request
curl -X POST -H "Content-Type:application/json" -d {"name":"默认目录","parentId":"12"} http://media.sewise.com/v1/media/createNode
Response
{
"status": 200,
"data": {
"cId": "3",
"name": "视频录像",
"parentId": "1",
"userId": "1",
"aId": "1",
"status":1
}
}
/v1/media/editNode
暂时只支持修改目录名称,不涉及父节点修改
application/json
POST
参数 必选 类型 说明 RequestBody cId 是 Int 分类Id name 是 String 目录名称
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
Request
curl -X POST -H "Content-Type:application/json" -d {"cId":"2","name":"视频","parentId":"1"} http://media.sewise.com/v1/media/editNode
Response
{
"status": 200,
"message": "修改成功",
"data": {
"cId": "2",
"name": "视频",
"parentId": "1",
"userId": "1",
"aId": "1",
"modifiedDate": "2016-12-14 11:06:24",
"status": "1"
}
}
/v1/media/deleteNode
application/json
POST
参数 必选 类型 说明 RequestBody cId 是 Int 分类Id;删除父节点时,前端应该提示:确定删除该分类和其分类下的子分类?用户确定后才提交请求
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
Request
curl -X POST -H "Content-Type:application/json" -d {"cId":"2"}
http://media.sewise.com/v1/media/deleteNode
Response
{
"status": 200,
"message": "删除成功",
}
/v1/media/treeNode
application/json
GET/POST
参数 必选 类型 说明 RequestBody
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
返回字段 | 字段类型 | 说明 |
---|---|---|
maxLevel | int | 返回允许创建最大层级;maxLevel:-1时允许无限分级 |
events | Array | 返回各种视频状态操作事件 |
返回字段 | 字段类型 | 说明 |
---|---|---|
categorys | Array | 返回分类列表结果 |
Request
curl -X POST -H "Content-Type:application/json" -d
http://media.sewise.com/v1/media/treeNode
Response
{"status":200,"data":[{"maxLevel":"6","events":[{"name":"正在转码","num":"20","status":"1"},{"name":"暂不可用","num":"8","status":"0"},{"name":"准备就绪","num":"6","status":"2","categorys":[{"cId":"1","name":"默认目录","parentId":"0","level":"1","children":[{"cId":"2","name":"视频","parentId":"1","level":"2","children":[{"cId":"4","name":"视频4","level":"3","parentId":"2"}]}]},{"cId":"6","name":"目录2","parentId":"0","level":"1","children":[{"cId":"7","name":"视频","level":"2","parentId":"1"}]}]}]}]}
/v1/media/save
application/json
POST
参数 必选 类型 说明 PathParam appid 是 String 应用appId time 是 long 请求时间戳(1481699786) random 否 String 加密随机数 sign 是 String 授权签名 RequestBody fileName 是 String 文件名称 sourceId 是 String 视频文件源sourceId format 是 String 文件格式 url 否 String 媒资地址 img 否 String 媒资截图 duration 否 float 媒资时长 size 是 bigint 文件的字节数 dimension 否 String 分辨率:(640*480) bitrate 否 int 码率:(480) framerate 否 String 帧率:(25fbps) status 是 int 状态: 0,不可用 ; 1,可用 isReferenced 否 int 使用状态: 0,未引用 ;1,引用 catalog 是 int 素材所属的目录ID transcodeId 否 String 转码任务ID workerUrl 否 String 服务的worker地址
/v1/media/save?appid={appid}&time={time}&random={random}&sign={sign}
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
Request
curl -X POST -H "Content-Type:application/json" -d {"fileName":"我的收藏","sourceId":"#########",....} http://media.sewise.com/v1/media/save
Response
{"status":200,"data":{"mId":"10"}}
/v1/media/info
application/json
POST
方式一 (POST)
参数 必选 类型 说明 PathParam appid 是 String 应用appId time 是 long 请求时间戳(1481699786) random 否 String 加密随机数 sign 是 String 授权签名 RequestBody mId 是 int 文件平台编号 方式二 (POST)
参数 必选 类型 说明 RequestHeader token 是 String 管理员/内部调用授权签名 RequestBody userId 是 Long 用户uid mId 是 int 文件平台编号 方式三 (POST)
参数 必选 类型 说明 RequestHeader unLoginToken 是 String 免登陆授权签名 RequestBody userId 是 Long 用户uid mId 是 int 文件平台编号
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
data
返回字段 | 字段类型 | 说明 |
---|---|---|
mId | int | 返回状态码 |
sourceId | String | 视频 ID |
user | String | 上传者 |
audio | String | 音频 |
tags | String | 标签 |
modifiedDate | String | 返回错误信息 |
audio | String | 音频 |
orign | String | 原画 |
videolist | Array | 返回结果 |
videolist
返回字段 | 字段类型 | 说明 |
---|---|---|
sd | array | 高清 |
hd | array | 标清 |
shd | array | 流畅 |
sd
返回字段 | 字段类型 | 说明 |
---|---|---|
template_id | string | tp_sd |
template_name | string | 高清 |
dimension | string | 1280x720 |
bitrate | string | 1500kb/s |
dimension | string | 640*480 |
bitrate | string | 1M |
data | array | 转码视频数据 |
data
返回字段 | 字段类型 | 说明 |
---|---|---|
itemId | string | tp_sd |
mId | string | 高清 |
sourceId | string | 视频sourceid |
format | string | |
duration | int | 时长 |
size | int | 文件大小 |
dimension | string | 分辨率 |
bitrate | string | |
framerate | string | |
status | int | 视频转码状态 |
modifiedDate | int | 最近更新时间 |
process | int | 转码百分比 |
jobId | string | 转码任务id |
play | string | 播放地址 |
download | string | 下载地址 |
Request
curl -X POST -H "Content-Type:application/json" -d {"mId":"1"}
http://media.sewise.com/v1/media/info
Response
{"status":200,"data":{"mId":"1","userId":"1","aId":"1","sourceId":"31480a4e452e85d64c3861525d5b6e25","fileName":"周润发 - 电影澳门风云3爆片花","status":"2","errorStatus":"0","isReferenced":"0","modifiedDate":"1482894124","category":"1","tags":"","resolution":"2","workerUrl":"http://192.168.1.66:3000","uploadUrl":"192.168.1.66:8888","maxQuality":"2","duration":"30","user":"","audio":{"acodec":"aac","channels":2,"samplerate":44100},"orign":{"file_size":"21650769","cover":"http://192.168.1.66:81/cover/31/48/0a/31480a4e452e85d64c3861525d5b6e25.jpg","duration":30,"format":"mp4","vcodec":"mpeg4","dimension":"1280x720","bitrate":5682742,"framerate":25},"videolist":{"sd":{"template_id":"tp_sd","template_name":"标清","dimension":"640x480","bitrate":"768kb/s","data":{"itemId":"1","mId":"1","sourceId":"31480a4e452e85d64c3861525d5b6e25","format":"","quality":"1","duration":"30","size":"21650769","dimension":"640x480","bitrate":"5682742","framerate":"25","status":"2","modifiedDate":"1482894115","process":"100","poster":"","templateId":"tp_sd","jobId":"","play":"http://192.168.1.66:8888/api/player/31480a4e452e85d64c3861525d5b6e25?mode=vod&protocal=hls","download":"http://192.168.1.66:81/video/31/48/0a/31480a4e452e85d64c3861525d5b6e25.mp4"}},"hd":{"template_id":"tp_hd","template_name":"高清","dimension":"1280x720","bitrate":"1500kb/s","data":{"itemId":"2","mId":"1","sourceId":"31480a4e452e85d64c3861525d5b6e25","format":"","quality":"2","duration":"30","size":"21650769","dimension":"1280x720","bitrate":"5682742","framerate":"25","status":"2","modifiedDate":"1482894124","process":"100","poster":"","templateId":"tp_hd","jobId":"","play":"http://192.168.1.66:8888/api/player/31480a4e452e85d64c3861525d5b6e25?mode=vod&protocal=hls","download":"http://192.168.1.66:81/video/31/48/0a/31480a4e452e85d64c3861525d5b6e25.mp4"}}}}}
/v1/media/list
application/json
GET/POST
方式一 (POST)
参数 必选 类型 说明 PathParam appid 是 String 应用appId time 是 long 请求时间戳(1481699786) random 否 String 加密随机数 sign 是 String 授权签名 RequestBody cId 否 int 素材所属的目录ID,默认所有目录 page 否 int 页数,默认1 pageSize 否 int 页码,默认20 order 否 String 排序,默认modifiedDate倒序(mId/fileName/modifiedDate/duration/name/status) direction 否 String 升序(ASC)/降序(DESC),默认降序 keyword 否 String 搜索关键字
/v1/media/list?appid={appid}&time={time}&random={random}&sign={sign}
方式二 (POST)
参数 必选 类型 说明 RequestHeader token 是 String 管理员/内部调用授权签名 RequestBody cId 否 int 素材所属的目录ID,默认所有目录 page 否 int 页数,默认1 pageSize 否 int 页码,默认20 order 否 String 排序,默认modifiedDate倒序(mId/fileName/modifiedDate/duration/name/status) direction 否 String 升序(ASC)/降序(DESC),默认降序 keyword 否 String 搜索关键字 方式三 (POST)
参数 必选 类型 说明 RequestHeader unLoginToken 是 String 免登陆授权签名 RequestBody cId 否 int 素材所属的目录ID,默认所有目录 page 否 int 页数,默认1 pageSize 否 int 页码,默认20 order 否 String 排序,默认倒序 keyword 否 String 搜索关键字 根据转码状态来请求(POST)
参数 必选 类型 说明 RequestBody status 是 int 转码状态,默认转码完成:2,转码中:1;不可用:-1;禁止:0 page 否 int 页数,默认1 pageSize 否 int 页码,默认20 order 否 String 排序,默认modifiedDate倒序(mId/fileName/modifiedDate/duration/name/status);特殊字段status; direction 否 String 升序(ASC)/降序(DESC),默认降序 keyword 否 String 搜索关键字 根据分类来请求(POST)
参数 必选 类型 说明 RequestBody cId 是 int 素材所属的目录ID,默认所有目录 page 否 int 页数,默认1 pageSize 否 int 页码,默认20 order 否 String 排序,默认modifiedDate倒序(mId/fileName/modifiedDate/duration/name) direction 否 String 升序(ASC)/降序(DESC),默认降序 keyword 否 String 搜索关键字
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
orderFields | Array | 可排序字段以及相关值 |
orderFields
返回字段 | 字段类型 | 说明 |
---|---|---|
order | Array | 排序可用字段 |
status | Array | 视频转码状态 |
direction | Array | 升降序 |
data
返回字段 | 字段类型 | 说明 |
---|---|---|
total_page | int | 总页数 |
page | int | 当前页数 |
pagesize | int | 每页显示数目 |
total_record | int | 所有数据总数 |
record | array | 当前页所有数据 |
record
返回字段 | 字段类型 | 说明 |
---|---|---|
mId | int | 媒资id |
userId | int | 上传用户id |
user | string | 上传用户名 |
aId | int | 应用id |
sourceId | int | 视频sourceid |
fileName | array | 视频名 |
status | array | 视频状态 |
errorStatus | array | 不可用状态 |
isReferenced | array | 是否引用;1:引用 |
modifiedDate | array | 最近修改时间 |
category | string | 上一级分类名 |
categoryId | int | 上一级分类id |
tags | string | 标签 |
resolution | int | 所有分辨率总数 |
duration | int | 视频时长 |
retrancode | int | 是否可以需要重新转码;1:可以 |
dimension | string | 最高码率分辨率 |
videolist | array | 视频播放列表 |
size | int | 视频大小 |
process | int | 视频所有分辨率转码平均百分比 |
videolist
返回字段 | 字段类型 | 说明 |
---|---|---|
name | int | 模版名 |
play | int | 播放地址 |
Request
curl -X POST -H "Content-Type:application/json" -d {"catalog":"1","page":"1","pageSize":"20","order":"mId Desc"}
http://media.sewise.com/v1/media/list
Response
{"status":200,"data":{"total_page":1,"page":"2","pagesize":"20","total_record":6,"record":[{"mId":"12","sourceId":"","fileName":"2222","status":"","isReferenced":"0","modifiedDate":"2016/12/21","category":"0","tags":"超级英雄,科幻,漫威,好莱坞","extra":{"audio":["双声道","AAC","64k","64kps"],"orign":["650x490","2M","1.2G","30帧","MP4","H.264"]},"resolution":"0","workerUrl":"","maxQuality":"1","duration":"1020","poster":"","dimension":"","video":"","size":0,"process":"0%"},{"mId":"13","sourceId":"","fileName":"11111","status":"","isReferenced":"0","modifiedDate":"2016/12/21","category":"0","tags":"22222222","extra":[],"resolution":"0","workerUrl":"","maxQuality":"0","duration":"110","poster":"","dimension":"","video":"","size":0,"process":"0%"},{"mId":"10","sourceId":"","fileName":"11111","status":"","isReferenced":"0","modifiedDate":"2016/12/09","category":"0","tags":"22222222","extra":[],"resolution":"0","workerUrl":"","maxQuality":"0","duration":"600","poster":"","dimension":"","video":"","size":0,"process":"0%"},{"mId":"6","sourceId":"","fileName":"2222","status":true,"isReferenced":"0","modifiedDate":"2016/08/27","category":"0","tags":"超级英雄,科幻,漫威,好莱坞","extra":{"audio":["双声道","AAC","64k","64kps"],"orign":["650x490","2M","1.2G","30帧","MP4","H.264"]},"resolution":"0","workerUrl":"","maxQuality":"1","duration":"100","poster":"","dimension":"640*480","video":"d22a334f555d11","size":"100K","process":"1%"},{"mId":"7","sourceId":"","fileName":"11111","status":"","isReferenced":"0","modifiedDate":"2016/05/04","category":"0","tags":"22222222","extra":[],"resolution":"0","workerUrl":"","maxQuality":"0","duration":"200","poster":"","dimension":"","video":"","size":0,"process":"0%"},{"mId":"9","sourceId":"","fileName":"2222","status":"","isReferenced":"0","modifiedDate":"2016/01/09","category":"0","tags":"超级英雄,科幻,漫威,好莱坞","extra":{"audio":["双声道","AAC","64k","64kps"],"orign":["650x490","2M","1.2G","30帧","MP4","H.264"]},"resolution":"0","workerUrl":"","maxQuality":"1","duration":"500","poster":"","dimension":"","video":"","size":0,"process":"0%"}],"orderFields":{"status":[0,1,2],"order":["mId","fileName","modifiedDate","name","duration","status"],"direction":["asc","desc"]}}}
/v1/media/move
application/json
POST
参数 必选 类型 说明 RequestBody mIds 是 Int 媒资Id组成的数组转的字符串(如 "1,2,3") cId 是 Int 分类Id
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
Request
curl -X POST -H "Content-Type:application/json" -d {"mIds":"1,2,3","cId":"2"}
http://media.sewise.com/v1/media/moveMedia
Response
{
"status": 200,
"message": "移动成功",
}
/v1/media/updateTags
application/json
POST
修改单个媒资标签
参数 必选 类型 说明 RequestBody mId 是 Int 媒资Id(多个id用','来间隔) tags 是 string 媒资标签;用','间隔
增量修改多个媒资标签
参数 必选 类型 说明 RequestBody mId 是 Int 媒资Id tags 是 string 媒资标签;用','间隔
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
Request
curl -X POST -H "Content-Type:application/json" -d {"mId":"1","tags":"超级英雄,科幻,漫威,好莱坞"}
http://media.sewise.com/v1/media/updateTags
Response
{
"status": 200,
"message": "修改成功",
}
/v1/media/delete
application/json
POST
参数 必选 类型 说明 RequestBody mIds 是 Int 媒资Id组成的数组转的字符串(如1,2,3)
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
Request
curl -X POST -H "Content-Type:application/json" -d {"mIds":"1,2,3"}
http://media.sewise.com/v1/media/delete
Response
{
"status": 200,
"message": "删除成功",
}
/v1/media/download
application/json
POST
参数 必选 类型 说明 RequestBody source_id 是 string 流id definition 是 int 清晰度(0流畅1标清2高清)
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
Request
curl -X POST -H "Content-Type:application/json" -d {"source_id":"aaaaaaaa","definition":"0"}
http://media.sewise.com/v1/media/download
Response
{"status":200,"data":{"downloadurl":"http://download.sewise.com/qwerasdfzxcvtyuiqwerasdfzxcvtyui.flv"}}
/v1/media/update
application/json
POST
参数 必选 类型 说明 RequestBody mId 是 Int 媒资Id(多个id用','来间隔) fileName 是 string 媒资标题
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
Request
curl -X POST -H "Content-Type:application/json" -d {"mId":"1","fileName":"超级英雄"}
http://media.sewise.com/v1/media/update
Response
{
"status": 200,
"message": "修改成功",
}
/v1/media/server
application/json
POST/GET
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
data | array | 返回上传信息 |
data
返回字段 | 字段类型 | 说明 |
---|---|---|
UUID | string | 上传任务id |
serverUrl | string | 核心地址 |
handleUrl | string | 核心握手地址地址 |
uploadUrl | string | 上传地址;加上uuid和切片数id即为切片核心上传地址 |
callbackUrl | string | 媒资回调地址 |
Request
curl -X POST -H "Content-Type:application/json"
http://media.sewise.com/v1/media/server
Response
{"cId":"1","UUID":"bb5ae39dd047b874341528f5d8c41380","serverUrl":"http://192.168.1.128:3000","handleUrl":"http://192.168.1.128:3000/api/file/upload","uploadUrl":"192.168.1.128:8888","callbackUrl":"http://192.168.1.111/v1/media/callback?token=09e05eafd740fc13116c962d1a6872e0412d1ecd","extra":"a:7:{s:9:\"file_size\";i:0;s:10:\"slice_size\";i:0;s:10:\"slice_nums\";i:0;s:11:\"suffix_name\";s:0:\"\";s:3:\"tag\";s:0:\"\";s:9:\"file_name\";s:0:\"\";s:13:\"capture_image\";b:0;}"}
/v1/media/cancel
application/json
POST
参数 必选 类型 说明 RequestBody mIds 是 Int 媒资Id组成的数组转的字符串(如1,2,3)
200
返回字段 | 字段类型 | 说明 |
---|---|---|
status | int | 返回状态码 |
message | String | 返回错误信息 |
data | Array | 返回结果 |
Request
curl -X POST -H "Content-Type:application/json" -d {"mIds":"1,2,3"}
http://media.sewise.com/v1/media/cancel
Response
{
"status": 200,
"message": "取消成功",
}
/v1/media/download
application/json
POST
参数 必选 类型 说明 RequestBody token 是 string 授权token sourceId 是 string 媒资的sourceid templateId 否 string 媒资的转码模板id;不传默认tp_default;
200
返回字段 | 字段类型 | 说明 |
---|---|---|
stream | stream | 下载流 |
/v1/media/process
application/json
POST
根据媒资id请求
参数 必选 类型 说明 RequestBody mIds 是 string 媒资的id,用','间隔开
根据媒资sourceid请求
参数 必选 类型 说明 RequestBody sourceIds 是 string 媒资的sourceid,用','间隔开
200
Request
curl -X POST -H "Content-Type:application/json" -d {"mIds":"1,2,3"}
http://media.sewise.com/v1/media/process
Response
{"status":200,"data":{"media":{"5":{"process":0,"sourceId":"f14555ecc94aaab916a62367368b4df4","mId":"5"},"6":{"process":0,"sourceId":"864917d2a0796dac8902bf9333331e73","mId":"6"}},"category":[{"name":"正在转码","num":4,"status":3},{"name":"暂不可用","num":0,"status":1}],"params":{"mIds":"5,6"}}}Request
curl -X POST -H "Content-Type:application/json" -d{"sourceIds":"67324bfce3a0e32cc1a4416707c8e6e7,57e0f2030c3c485cdf9a71a8f44b36d3"}
http://media.sewise.com/v1/media/process
Response
{"status":200,"data":{"media":{"67324bfce3a0e32cc1a4416707c8e6e7":{"process":100,"sourceId":"67324bfce3a0e32cc1a4416707c8e6e7","mId":"1"},"57e0f2030c3c485cdf9a71a8f44b36d3":{"process":0,"sourceId":"57e0f2030c3c485cdf9a71a8f44b36d3","mId":"3"}},"category":[{"name":"正在转码","num":4,"status":3},{"name":"暂不可用","num":0,"status":1}],"params":{"sourceId":"67324bfce3a0e32cc1a4416707c8e6e7,57e0f2030c3c485cdf9a71a8f44b36d3"}}}
/v1/media/transcode
application/json
POST
根据媒资id请求
参数 必选 类型 说明 RequestBody mIds 是 string 媒资的id,用','间隔开
根据媒资sourceid请求
参数 必选 类型 说明 RequestBody sourceIds 是 string 媒资的sourceid,用','间隔开
200
Request
curl -X POST -H "Content-Type:application/json" -d {"mIds":"1,2,3"}
http://media.sewise.com/v1/media/transcode