上传API
该接口为用户提供自编码完成视频上传功能,包括Flash和HTTP两种方式。
Flash视频上传
Spark API 需要 Flash 插件的版本在 10.1 以上方可正常使用,请确保 Flash 插件版本符合要求。
在上传视频的过程中,不需要与 Spark 平台进行 HTTP 通信,使用 JavaScript 和 Spark 提供的 Flash 进行交互即可完成。上传接口用到的所有 javascript 函数定义见下表:
函数定义 | 参数说明 |
---|---|
on_spark_selected_file(file_name, file_size) | file_name: 上传文件名 file_size: 上传的文件大小,单位字节 |
on_spark_upload_validated(status, videoid) | status: 验证结果 videoid: 视频 id |
on_spark_upload_progress(progress) | progress: 上传进度。正确时,0~100 之间的整数,包括 0 和 100;错误时,返回-1. |
网页嵌入 Spark 提供的上传 Flash 时,需要传递下列参数:
参数(flashvars) | 参数说明 |
---|---|
progress_interval | 回调进度函数的时间间隔,默认 1 秒 |
notify_url | 视频处理完毕后的通知地址 |
上传视频流程
第一步,选择文件
Spark 提供一个透明的 Flash 进行文件上传,地址如下: http://union.bokecc.com/flash/api/uploader.swf
由于它是透明的,所以可以置于任何一个 html 元素的上方而不影响的页面视觉效果。上传文件时,必须通过点击到该 flash 从而打开浏览对话框进行文件选择。 文件选择成功后,Flash 会调用页面中的on_spark_selected_file 函数,页面可以选择合适的方式处理该事件。
第二步,验证参数
当用户选择文件后,需将下面的参数按照 THQS 算法处理后传递给 Flash 的 start_upload 函数后,才能开始上传流程。首先要进行参数和权限的验证,通过 后才开始文件上传。
参数列表
参数 | 含义 | 备注 |
---|---|---|
userid | 用户ID | 必选 |
categoryid | 分类id | 可选 |
title | 视频标题,若值为空,则采用去后缀的文件名作为title | 必选 |
tag | 视频标签 | 必选 |
description | 视频简介 | 必选 |
验证完成后,Flash 会调用 on_spark_upload_validated 函数传递验证结果以及视频 id。验证状态码的含义如下:
|验证状态码|说明| |OK|成功| |NETWORK_ERROR|网络错误| |其它|Spark API 错误码|
第三步,文件上传
文件开始上传后,Flash 会周期性调用 on_spark_upload_progress 函数来报告上传进度,间隔秒数由 progress_interval 参数指定。如果上传的进度为负数, 则说明发生网络错误,上传中断。返回 100 则表示上传成功。当返回 100 或者 -1 后,Flash 就不再调用该函数了。
第四步,回调
当处理完毕视频后(上传、转码、审核都完成后),Spark 平台会通过由参数 notify_url 指定的 HTTP/HTTPS 地址以 GET ⽅式发起回调。若⽤户网站地址使⽤HTTPS协议进⾏数据安全传输时,⽤户需保证其拥有的CA证书是合法的。
⽤户指定的 notify_url 符合以下四种 notify_url 格式之⼀即为合法:
2、http://domain?data=******(data为⽤户⾃定义的参数)
若参数 notify_url 中携带有⽤户⾃定义的参数,则在进⾏回调通知时会将⽤户⾃定义的参数和下表中的参数⼀起以 THQS ⽅式进⾏加密。
参数 | 说明 |
---|---|
videoid | 视频 id,16位 hex 字符串 |
status | 视频状态。”OK”表示视频处理成功,”FAIL”表示视频处理失败。 |
duration | 片长(单位:秒) |
image | 视频截图地址 |
视频处理失败有多种情况,例如视频文件异常、视频内容违规等等。
<?xml version="1.0" encoding="UTF-8"?>
<video>OK</video>
当 notify_url 指定的接口返回上述 xml 时,Spark 会认为网站已经成功接收到了回调信息,不再进行重试。返回其它任何内容,Spark 视频平台会进行重试,重试的间隔会随着重试次数的增大而增大。若重试 7 次后,依然没有成功,则不再进行通知。因此,Spark 视频平台最多通知 8 次。这 8 次的通知时间距第一次的通知时间的差分别为:
[0,15s, 1m, 4m, 16m, 1h4m, 4h16m, 17h4m]