API参考
接口目录
- 创建视频
- 获取视频列表
- 获取单个视频
- 获取分享视频
- 搜索视频
- 更新视频名称、视频封面等视频信息
- 设置视频分享密码
- 查询该用户所有视频的已用空间
- 转码视频
- 删除视频
- 批量删除视频
- 查询单个视频的每分钟流量
- 查询视频总流量,分页
- 导出视频总流量,分页
- 查询该用户上传的所有视频的每日流量之和
- 导出该用户上传的所有视频的每日流量之和,一天一条数据
- 获取该用户上传的所有视频的总流量之和
- 错误码
- 消息通知
- 判断视频能否合并
创建视频
POST /video/api/create
需要先调用存储微服务的接口,如 /storage/api/upload
等,上传视频,获取到 storage_id
JSON 参数
参数 | 描述 | 取值 |
---|---|---|
storage_id | 文件 ID | string |
source_type | 来源类型(调用方自己定义,如 streaming, upload, etc.) | string |
source_id | 来源 ID(不知道该值可不填) | string |
video_name | (可选)视频文件名(默认为存储服务上的文件名) | string |
skip_auto_trans | (可选)创建的视频无视该用户配置的自动转码规则,不进行自动转码(为 true 时生效) | bool |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
id | 视频 ID | string |
返回示例:
{
"errcode": 1000,
"id": "17lok52y",
"msg": "OK"
}
获取视频列表
GET /video/api/list
视频状态表:
值 | 意义 |
---|---|
0 | 初始状态 |
1 | 上传成功(这是最终状态) |
2 | 上传中 |
3 | 上传失败 |
4 | 已删除 |
转码视频状态表:
值 | 意义 |
---|---|
0 | 初始状态(过程状态) |
1 | 上传成功(这是最终状态) |
2 | 转码中(过程状态) |
3 | 转码成功(过程状态) |
4 | 转码失败 |
5 | 上传中(过程状态) |
6 | 上传失败 |
7 | 已删除 |
URL 参数
参数 | 描述 | 取值 |
---|---|---|
page | 页数,默认 1 | int |
page_size | 每页个数,默认 15 | int |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
videos | 视频列表 | object array |
videos.id | 视频 ID | string |
videos.created_at | 创建时间 | string |
videos.updated_at | 更新时间 | string |
videos.source_type | 上传来源类型 | string |
videos.source_id | 来源 ID | string |
videos.status | 视频状态(见视频状态表) | int |
videos.storage_id | 文件 ID | string |
videos.origin_url | 原片 URL(初始为空) | string |
videos.thumb_url | 视频封面 URL(初始为空) | string |
videos.file_size | 视频文件大小 | int |
videos.video_name | 视频名称 | string |
videos.video_width | 视频宽 | int |
videos.video_height | 视频高 | int |
videos.video_duration | 视频时长(毫秒) | int |
videos.shared_state | 分享状态(0-私有,1-需要密码,2-不需要密码) | int |
videos.share_password | 分享密码 | string |
videos.play_set | 视频转码数据 | object array |
videos.play_set.created_at | 创建时间 | string |
videos.play_set.updated_at | 更新时间 | string |
videos.play_set.storage_id | 文件 ID | string |
videos.play_set.status | 转码视频状态(定义见转码视频状态表) | int |
videos.play_set.trans_progress | 转码进度(0.0~1.0) | float |
videos.play_set.trans_task_config_temp_id | 转码模板 ID | int |
videos.play_set.url | 文件 URL | string |
videos.play_set.file_size | 视频文件大小 | int |
videos.play_set.video_width | 视频宽 | int |
videos.play_set.video_height | 视频高 | int |
videos.play_set.video_duration | 视频时长(毫秒) | int |
videos.play_set.resolution | 清晰度(360P, 480P, 720P, 1080P, Origin) | string |
count | 视频总个数 | int |
返回示例:
{
"count": 33,
"errcode": 1000,
"msg": "OK",
"videos": [
{
"id": "17lok52y",
"created_at": "2010-11-22T15:16:17+08:00",
"updated_at": "2010-11-22T15:16:17+08:00",
"source_type": "1",
"source_id": "1",
"status": 1,
"storage_id": "1",
"origin_url": "1",
"thumb_url": "1",
"file_size": 1,
"video_name": "1",
"video_width": 1,
"video_height": 1,
"video_duration": 1,
"shared_state": 1,
"share_password": "5zpr0kpzo",
"play_set": [
{
"created_at": "2010-11-22T15:16:17+08:00",
"updated_at": "2010-11-22T15:16:17+08:00",
"storage_id": "1",
"status": 1,
"trans_progress": 1,
"trans_task_config_temp_id": 1,
"url": "1",
"file_size": 1,
"video_width": 1,
"video_height": 1,
"video_duration": 1,
"resolution": "360P"
}
]
}
]
}
获取单个视频
GET /video/api/get
URL 参数
参数 | 描述 | 取值 |
---|---|---|
id | 视频 ID | string |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
video | 视频信息 | object |
video.id | 视频 ID | string |
video.created_at | 创建时间 | string |
video.updated_at | 更新时间 | string |
video.source_type | 上传来源类型 | string |
video.source_id | 来源 ID | string |
video.status | 视频状态(见视频状态表) | int |
video.storage_id | 文件 ID | string |
video.origin_url | 原片 URL(初始为空) | string |
video.thumb_url | 视频封面 URL(初始为空) | string |
video.file_size | 视频文件大小 | int |
video.video_name | 视频名称 | string |
video.video_width | 视频宽 | int |
video.video_height | 视频高 | int |
video.video_duration | 视频时长(毫秒) | int |
video.shared_state | 分享状态(0-私有,1-需要密码,2-不需要密码) | int |
video.share_password | 分享密码 | string |
video.play_set | 视频转码数据 | object array |
video.play_set.created_at | 创建时间 | string |
video.play_set.updated_at | 更新时间 | string |
video.play_set.storage_id | 文件 ID | string |
video.play_set.status | 转码视频状态(定义见转码视频状态表) | int |
video.play_set.trans_progress | 转码进度(0.0~1.0) | float |
video.play_set.trans_task_config_temp_id | 转码模板 ID | int |
video.play_set.url | 文件 URL | string |
video.play_set.file_size | 视频文件大小 | int |
video.play_set.video_width | 视频宽 | int |
video.play_set.video_height | 视频高 | int |
video.play_set.video_duration | 视频时长(毫秒) | int |
video.play_set.resolution | 清晰度(360P, 480P, 720P, 1080P, Origin) | string |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"video": {
"id": "17lok52y",
"created_at": "2010-11-22T15:16:17+08:00",
"updated_at": "2010-11-22T15:16:17+08:00",
"source_type": "1",
"source_id": "1",
"status": 1,
"storage_id": "1",
"origin_url": "1",
"thumb_url": "1",
"file_size": 1,
"video_name": "1",
"video_width": 1,
"video_height": 1,
"video_duration": 1,
"shared_state": 1,
"share_password": "5zpr0kpzo",
"play_set": [
{
"created_at": "2010-11-22T15:16:17+08:00",
"updated_at": "2010-11-22T15:16:17+08:00",
"storage_id": "1",
"status": 1,
"trans_progress": 1,
"trans_task_config_temp_id": 1,
"url": "1",
"file_size": 1,
"video_width": 1,
"video_height": 1,
"video_duration": 1,
"resolution": "360P"
}
]
}
}
获取分享视频
GET /video/api/get_shared_video
若访问该视频需要密码,当密码一致时才能获取该视频
URL 参数
参数 | 描述 | 取值 |
---|---|---|
id | 视频 ID | string |
password | 视频密码 | string |
返回内容同获取单个视频
搜索视频
GET /video/api/search
- 根据视频 ID 搜索
- 根据视频名称模糊搜索
- 根据视频来源搜索
URL 参数
参数 | 描述 | 取值 |
---|---|---|
search | 搜索内容(ID 或视频名称) | string |
source_type | 视频来源 | int |
page | 页数,默认 1 | int |
page_size | 每页个数,默认 15 | int |
返回字段和示例同获取视频列表
更新视频名称、视频封面等视频信息
POST /video/api/update
(更新封面时,原封面会被删除)
URL 参数
参数 | 描述 | 取值 |
---|---|---|
id | 视频 ID | string |
JSON 参数
参数 | 描述 | 取值 |
---|---|---|
video_name | (可选)视频名称 | string |
thumb_storage_id | (可选)要替换的封面的文件 ID | string |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
返回示例:
{
"errcode": 1000,
"msg": "OK"
}
设置视频分享密码
POST /video/api/set_video_password
URL 参数
参数 | 描述 | 取值 |
---|---|---|
id | 视频 ID | string |
JSON 参数
参数 | 描述 | 取值 |
---|---|---|
shared_state | 分享状态(0-私有,1-需要密码,2-不需要密码) | int |
password | 视频分享密码(0-16位字符) | string |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
返回示例:
{
"errcode": 1000,
"msg": "OK"
}
查询该用户所有视频的已用空间
GET /video/api/get_video_size_sum
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
size_sum | 该用户所有视频的已用空间(字节) | int |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"size_sum": 4813741023
}
转码视频
POST /video/api/trans
说明:若调用转码时存储的原始文件还没准备好,是无法转码的,可以在创建点播并成功收到 video_ready 回调之后,再去调用转码
URL 参数
参数 | 描述 | 取值 |
---|---|---|
id | 视频 ID | string |
JSON 参数
参数 | 描述 | 取值 |
---|---|---|
task_config_temp_id | 转码模板 ID(参见转码微服务) | int |
redo | 重新转码,该操作会删除原有的转码任务 | bool |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
返回示例:
{
"errcode": 1000,
"msg": "OK"
}
删除视频
POST /video/api/delete
视频、视频的转码、视频封面也会被删除
URL 参数
参数 | 描述 | 取值 |
---|---|---|
id | 视频 ID | string |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
返回示例:
{
"errcode": 1000,
"msg": "OK"
}
批量删除视频
POST /video/api/delete_videos
视频、视频的转码、视频封面也会被删除
URL 参数
参数 | 描述 | 取值 |
---|---|---|
ids | 一组视频 ID,用逗号隔开 | string |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
返回示例:
{
"errcode": 1000,
"msg": "OK"
}
查询单个视频的每分钟流量
GET /video/api/list_video_statistic
可以查询跨度在90天内的该视频的流量数据,即查询该视频的 [start, end] 时间范围内的每分钟流量,且 end-start<=90天
URL 参数
参数 | 描述 | 取值 |
---|---|---|
id | 视频 ID | string |
start | 时间戳 | int |
end | 时间戳 | int |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
video_statistic | 结果列表 | object array |
video_statistic.time | 时间 | string |
video_statistic.bytes | 该分钟的流量(字节数) | int |
查询视频总流量,分页
GET /video/api/list_video_total_summary
可以选择如下查询方式:
- 按视频 ID 查询
- 按视频名称查询
- 按视频创建时间查询,即 start<=视频创建时间<=end,且 end-start<=90天
URL 参数
参数 | 描述 | 取值 |
---|---|---|
search | 视频 ID 或 视频名称 | string |
start | 时间戳 | int |
end | 时间戳 | int |
page | 页数,默认 1 | int |
page_size | 每页个数,默认 20 | int |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
count | 满足查询条件的视频总数 | int |
video_total_summary_list | 结果列表 | object array |
video_total_summary_list.video_id | 视频 ID | string |
video_total_summary_list.video_name | 视频名称 | string |
video_total_summary_list.video_created_at | 上传时间 | string |
video_total_summary_list.total_bytes | 使用流量(字节) | int |
导出视频总流量,分页
GET /video/api/export_video_total_summary
可以选择如下查询方式:
- 按视频 ID 查询
- 按视频名称查询
- 按视频创建时间查询,即 start<=视频创建时间<=end,且 end-start<=90天
URL 参数
参数 | 描述 | 取值 |
---|---|---|
search | 视频 ID 或 视频名称 | string |
start | 时间戳 | int |
end | 时间戳 | int |
返回一个 CSV 文件
查询该用户上传的所有视频的每日流量之和
GET /video/api/list_user_video_day_summary
可以查询跨度在90天内的每日流量之和,即 [start, end] 时间范围内的每日流量之和,且 end-start<=90天
URL 参数
参数 | 描述 | 取值 |
---|---|---|
start | 北京时区的零点时间戳,如 1471881600(2016-08-23 00:00:00) | int |
end | 北京时区的零点时间戳 | int |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
user_video_day_summary_list | 结果列表 | object array |
user_video_day_summary_list.date | 日期 | string |
user_video_day_summary_list.total_bytes | 使用流量(字节) | int |
导出该用户上传的所有视频的每日流量之和,一天一条数据
GET /video/api/export_user_video_day_summary
可以查询跨度在90天内的每日流量之和,即 [start, end] 时间范围内的每日流量之和,且 end-start<=90天
URL 参数
参数 | 描述 | 取值 |
---|---|---|
start | 北京时区的零点时间戳,如 1471881600(2016-08-23 00:00:00) | int |
end | 北京时区的零点时间戳 | int |
返回一个 CSV 文件
获取该用户上传的所有视频的总流量之和
GET /video/api/get_user_video_total_summary
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
user_video_total_summary | 结果对象 | object |
user_video_total_summary.total_bytes | 使用流量(字节) | int |
错误码
错误代码 | 使用模块 | 错误描述 |
---|---|---|
3101 | 点播 | 参数不合法 |
3102 | 点播 | 找不到该文件 |
3103 | 点播 | 视频正在上传 |
3104 | 点播 | 视频上传失败 |
3105 | 点播 | 视频已有正在进行的或已完成的转码 |
3106 | 点播 | 媒体库已存在该视频,请勿重复上传 |
3107 | 点播 | 该文件上传失败,请重新上传 |
3108 | 点播 | 访问拒绝 |
3111 | 点播 | 内部错误:无法创建转码任务 |
3112 | 点播 | 内部错误:无法删除转码任务 |
3113 | 点播 | 内部错误:从 URL 上传文件失败 |
3114 | 点播 | 内部错误:创建临时文件失败 |
3121 | 点播 | 插入视频失败 |
3122 | 点播 | 查询单个视频失败 |
3123 | 点播 | 修改视频失败 |
3124 | 点播 | 删除视频失败 |
3125 | 点播 | 查询视频列表失败 |
3126 | 点播 | 检查 storage ID 是否存在失败 |
3127 | 点播 | 获取视频大小之和失败 |
3131 | 点播 | 插入视频具体数据失败 |
3132 | 点播 | 查询单个视频具体数据失败 |
3133 | 点播 | 修改视频具体数据失败 |
3134 | 点播 | 删除视频具体数据失败 |
3135 | 点播 | 查询视频具体数据列表失败 |
3141 | 点播 | add video key description failed |
3142 | 点播 | modify video key description failed |
3143 | 点播 | get video key description failed |
3144 | 点播 | delete video key description failed |
3151 | 点播 | 保存转码配置失败 |
3152 | 点播 | 删除转码配置失败 |
3153 | 点播 | 获取转码配置列表失败 |
3161 | 点播 | 数据库错误:获取点播总流量失败 |
3162 | 点播 | 数据库错误:列出点播总流量失败 |
3163 | 点播 | 数据库错误:列出用户每日流量失败 |
3164 | 点播 | 数据库错误:获取用户点播总流量失败 |
消息通知
0.在 svc_notify.user_event_config 中配置要回调的用户和回调地址,例如
36 video http://bugu.198dev.myun.tv:10080/videos/api/video_callback http 36 transcoding http://bugu.198dev.myun.tv:10080/videos/api/transcode_callback http
1.视频和转码的视频准备好(即其 Status 为 1)后,会调用消息通知微服务,发送视频数据
2.视频准备好后发送:
参数|描述|类型| |-------|--------|--------| |event_type|事件类型,值为 "video_ready" |string| |video_id|视频 ID|string| |storage_id|存储 ID|string| |source_type|上传来源类型|string| |source_id|来源 hash ID|string| |url_origin|原片 URL|string| |thumb_url|视频封面 URL|string| |file_size|视频文件大小|int| |video_name|视频名称|string| |video_width|视频宽|int| |video_height|视频高|int| |video_duration|视频时长|int| |play_set|视频转码的数据(定义见下表)|object array|
其中 play_set 是一个对象数组,对象描述:
参数 | 描述 | 类型 |
---|---|---|
play_set_id | PlaySet ID | string |
trans_task_config_temp_id | 转码模板 ID | int |
resolution | 清晰度("360P", "480P", "720P", "1080P", "Origin") | string |
url | 文件 URL | string |
file_size | 视频文件大小 | int |
video_width | 视频宽 | int |
video_height | 视频高 | int |
video_duration | 视频时长 | int |
若用户有转码配置,play_set 会包含一个转码数据;否则 play_set 为空
3.转码视频准备好后发送:
参数 | 描述 | 类型 |
---|---|---|
event_type | 事件类型,值为 "video_play_set_ready" | string |
play_set_id | PlaySet ID | string |
video_id | 视频 ID | string |
status | 转码视频状态(定义见"获取视频列表") | int |
trans_task_config_temp_id | 转码模板 ID | int |
resolution | 清晰度("360P", "480P", "720P", "1080P", "Origin") | string |
url | 文件 URL | string |
file_size | 视频文件大小 | int |
video_width | 视频宽 | int |
video_height | 视频高 | int |
video_duration | 视频时长 | int |
判断视频能否合并
POST /video/api/can_videos_be_merged
仅限 M3U8 链接
JSON 参数
参数 | 描述 | 取值 |
---|---|---|
video_urls | M3U8 链接数组 | string array |
返回字段
参数 | 描述 | 取值 |
---|---|---|
errcode | 错误码,1000 为正常 | int |
msg | "OK" 或错误信息 | string |
can_be_merged | 能否合并 | bool |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"can_be_merged": true
}