SparkAPI_v2.3.3.pages

Similar documents
SparkAPI_开发指南_v2.1.4.pages

SparkAPI_开发指南_v2.1.4.pages

SparkAPI_开发指南_v2.1.3

SparkAPI_v2.3.1.pages

SparkAPI_v2.3.2.pages

SparkAPI_开发指南_v2.0.4

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

南華大學數位論文

获取 Access Token 1 基础概念 access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要妥善保存,access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

RPC SOAP REST API API HTTP JSON XML PHP PHP PHP PHP PHP HTTP request/response cycle HTTP HTTP verbs headers Cookies JSON XML PHP RPC SOAP RESTful HTTP

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

Microsoft Word - 01.DOC

新・解きながら学ぶJava

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

Guava学习之Resources

( Version 0.4 ) 1

通用短信平台HTTP接口使用说明V1.0.4

1. 2. Flex Adobe 3.

Microsoft Word - PHP7Ch01.docx

IP505SM_manual_cn.doc

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK

Microsoft Word - 第3章.doc

「人名權威檔」資料庫欄位建置表

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

17 Chapter Video/Audio API 17-1 <video> <audio> 17-2 <video> <audio>

無障礙網頁開發規範二版(草案)

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

PowerPoint プレゼンテーション

untitled


2 SGML, XML Document Traditional WYSIWYG Document Content Presentation Content Presentation Structure Structure? XML/SGML 3 2 SGML SGML Standard Gener

CDWA Mapping. 22 Dublin Core Mapping

目 录 API 接 口..3 相 关 说 明...3 系 统 参 数 说 明..3 返 回 参 数 说 明...3 接 口 说 明...4 视 频 管 理 视 频 上 传 初 始 化 (Web 方 式 ) 4 2. 视 频 上 传 (Web 方 式 ) 4 3. 视 频 断 点 续 传

FileMaker 15 WebDirect 指南

目录 1. 视频上传接口 ( 已集成在 SDK 中 ) 请求上传 web 端请求上传 上传 通知上传完成 取消上传 获取视频状态 获取视频信息

2 Requirements Documentation Doc Name Doc No. 1.0 Version No. Total Page Generated By V6.0.0 Generated Date 2011/10/21 Checked By Checked Date 2011/10

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访

國家圖書館典藏電子全文

TWLOM060929

概述

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

05 01 accordion UI containers 03 Accordion accordion UI accordion 54

RUN_PC連載_8_.doc

epub 79-1

Microsoft Word 電腦軟體設計.doc

untitled

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

先生別耍我

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

基于ECO的UML模型驱动的数据库应用开发1.doc

chapter 2 HTML5 目錄iii HTML HTML HTML HTML HTML canvas

Adobe AIR 安全性

JavaIO.PDF

2005 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / Sun Sun Microsystems Su

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

Microsoft Word - Learn Objective-C.doc

PowerPoint 演示文稿

untitled

13 根 据 各 种 网 络 商 务 信 息 对 不 同 用 户 所 产 生 的 使 用 效 用, 网 络 商 务 信 息 大 致 可 分 为 四 级, 其 中 占 比 重 最 大 的 是 ( A ) A 第 一 级 免 费 信 息 B 第 二 级 低 收 费 信 息 C 第 三 级 标 准 收 费

● 源起

02

關於本書 Part 3 CSS XHTML Ajax Part 4 HTML 5 API JavaScript HTML 5 API Canvas API ( ) Video/Audio API ( ) Drag and Drop API ( ) Geolocation API ( ) Part 5

UDC The Design and Implementation of a Specialized Search Engine Based on Robot Technology 厦门大学博硕士论文摘要库

我 们 再 看 到 尼 西 米 记, 也 会 发 现 当 时 神 的 百 姓 有 一 颗 单 纯 受 教 的 心, 他 们 单 纯 的 听 从 神 的 教 导, 敬 畏 遵 从 神 的 训 诲 当 他 们 明 白 自 己 的 罪 孽 时, 个 个 俯 伏 在 地, 为 罪 痛 悔 哭 泣 在 整 个

EJB-Programming-4-cn.doc

ASP 電子商務網頁設計

目录

新美大酒店开放平台SDK(.NET版)使用说明.pages

Microsoft Word - ch02.doc

温州市政府分散采购

C/C++ - 函数

Microsoft Word - Functional_Notes_3.90_CN.doc

Microsoft Word - 苹果脚本跟我学.doc

C/C++ - 文件IO

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

PlayerAPI_v1.0.5.pages

数据结构与算法 - Python基础

本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操

Bus Hound 5

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

RxJava

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo

untitled

SiteView技术白皮书

基于CDIO一体化理念的课程教学大纲设计

AXIS P7224 Video Encoder Blade – Installation Guide

使用Cassandra和Spark 2.0实现Rest API服务

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

3.1 num = 3 ch = 'C' 2

PowerPoint 演示文稿

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

p.2 1 <HTML> 2 3 <HEAD> 4 <TITLE> </TITLE> 5 </HEAD> 6 7 <BODY> 8 <H3><B> </B></H3> 9 <H4><I> </I></H4> 10 </BODY> </HTML> 1. HTML 1. 2.

Chapter #

iGENUS爱琴思邮件系统技术白皮书

tw_basics.book

<4D F736F F D203120BBA5C1AACDF8BBF9B4A1B1EAD7BC2E646F63>


Transcription:

Spark API 开发指南 北京梦之窗数码科技有限公司 版本 : 2.3.3 期 : 2015-11-08

录 1. 概述... 2 2. 通信约定... 2 2.1 HTTP 法... 2 2.2 返回格式... 2 2.3 编码格式... 2 2.4 加密... 2 2.5 接 访问次数限制... 2 3. HTTP 接... 3 3.1 获取 户信息... 3 3.2 获取视频信息... 4 3.3 批量获取视频信息... 6 3.4 获取视频播放代码... 8 3.5 编辑视频信息... 9 3.6 删除视频... 10 3.7 获取视频分类... 11 3.8 搜索视频... 12 4. 视频 件上传接... 14 4.1 Flash 视频上传... 14 4.2 HTTP 视频上传 ( 断点续传 )... 16 附录 1. HTTP 通信加密算法... 23 附录 2. Flash 和 JavaScript 交互 24

1. 概述 利 Spark API 可以与 CC 视频 Spark 云进 对接, 使 Spark 云的主要视频功能 当前 Spark API 的版本具有上传 播放 获取视频信息 获取 户信息 删除视频 获取视频分类等接 前 Spark API 仅对合作 开启, 如果您有使 的需求, 请通过 CC 视频后台申请 API Key, 通过审核后才能使 Spark API 2. 通信约定 Spark API 的远程通信接 基于 HTTP 协议, 并有以下约定 : 2.1 HTTP 法 所有接 采 GET 请求 2.2 返回格式 接 的返回格式包括 XML 格式和 JSON 格式, 编码均为 UTF-8 对于不同的接, 正确的返回结果的格式会在每个接 中单独定义, 错误的返回结果具有统 的形式, 如下所 : <?xml version="1.0" encoding="utf-8"?> <error>error_code</error> { error : ERROR_CODE 实际中, 下表中的某 个具体的错误码会替换掉上 的 ERROR_CODE: 错误码 INVALID_REQUEST SPACE_NOT_ENOUGH SERVICE_EXPIRED PROCESS_FAIL TOO_MANY_REQUEST 户输 错误 户剩余空间不 户服务已经过期服务器处理失败访问过于频繁 PERMISSION_DENY 2.3 编码格式 Spark API 只接受 UTF-8 格式编码的信息, 返回的数据也都是 UTF-8 编码的 当需要通过 GET 请求传递时,QueryString 的 value 值都需要进 URL Encode 之后, 再进 传递 2.4 加密 所有的 HTTP 通信都是加密的, 加密的核 思想是将原始的 QueryString 转换为和请求时间相关的 HashedQueryString, 我们称这个加密算法为 THQS 算法 关于 THQS 算法的细节请参 附录 1 2.5 接 访问次数限制 户服务 权限

当某 个接 的访问频率在 分钟之内超过 100 次的时候, 该 户的 API 功能将被禁, 之后所有请求都将失效 如果上述阈值 法满 您的正常需求的时候, 可以联系 CC 客服申请提升 API 的请求频率 3. HTTP 接 3.1 获取 户信息 http://spark.bokecc.com/api/user 需要传递以下 : 通过该接 可以获取指定 户的账户信息, 地址为 : userid format 返回数据 user 包含如下字段 : account version expired space traffic space 包含如下字段 : total remain used traffic 包含如下字段 : total remain used XML 格式的返回信息如下 : 户 id, 不可为空返回格式,xml 或 json 户账户版本信息到期时间 户空间信息 户流量信息 户空间总量, 单位 G 户空间剩余总量, 单位 G 户空间使 总量, 单位 G 户流量总量, 单位 G 户剩余流量, 单位 G 户已使 流量, 单位 G

<?xml version="1.0" encoding="utf-8"?> <user> <account>test@test.com</account> <version><[cdata[ 试 版 ]]></version> <expired>2011-06-06</expired> <space> <total>2</total> <remain>1.9</remain> <used>0.1</used> </space> <traffic> <total>5</total> <remain>4.8</remain> <used>0.2</used> </traffic> </user> JSON 格式的返回信息如下 : { "user":{ "account":"test@test.com", "version":" 试 版 ", "expired":"2011-06-06", "space":{ "total":2, "remain":1.9, "used":0.1, "traffic":{ "total":5, "remain":4.8, "used":0.2 3.2 获取视频信息 a. 当地址为 http://spark.bokecc.com/api/video 需要传递以下 : 通过该接 可以获取指定 户的有效视频的信息, 地址为 : userid videoid format 返回数据 video 包括如下字段 : id title 户 id, 不可为空视频 id, 不可为空返回格式,xml 或 json 视频 ID 视频标题

desp tags duration category image imageindex image-alternate image-alternate 包括如下字段 : index url XML 格式的返回信息如下 : 视频描述视频标签视频时, 单位秒视频分类 ID 视频截图地址视频截图序号视频截图排列信息视频截图排列序号视频截图地址 <?xml version="1.0" encoding="utf-8"?> <video> <id>01234567</id> <title><[cdata[ 视频标题 ]]></title> <desp><[cdata[ 视频描述 ]]></desp> <tags><[cdata[ 标签 1 标签 2 标签 3]]></tags> <duration>12345</duration> <category>12345</category> <image>http://image.bokecc.com/abc.jpg</image> <imageindex>1</imageindex> <image-alternate> <index>0</index> <url>http://image.bokecc.com/abc0.jpg</url> </image-alternate> <image-alternate> <index>1</index> <url>http://image.bokecc.com/abc1.jpg</url> </image-alternate>... </video> JSON 格式的返回信息如下 :

{ "video":{ "id":"01234567", "title":" 视频标题 ", "desp":" 视频描述 ", "tags":" 标签 1 标签 2 标签 3", "duration":12345, "category":"12345", "image":"http://image.bokecc.com/abc.jpg", "imageindex":1, "image- alternate":[{ "index":0, "url":"http://image.bokecc.com/abc0.jpg",... ] b. 当地址为 http://spark.bokecc.com/api/video/v2 需要传递以下 userid videoid format 返回数据 video 包括如下字段 : id title desp tags duration category image imageindex image-alternate definition image-alternate 包括如下字段 : index 户 id, 不可为空视频 id, 不可为空返回格式,xml 或 json 视频 ID 视频标题视频描述视频标签视频时, 单位秒视频分类 ID 视频截图地址视频截图序号视频截图排列信息视频 件 信息视频截图排列序号

url definition 包括如下字段 : definitionlevel definitiondesc 视频截图地址 视频清晰度值 视频清晰度描述 terminaltype 终端类型 (0:PC 端,10: 移动端 ) filesize XML 格式的返回信息如下 : 视频 件 <?xml version="1.0" encoding="utf-8"?> <video> <id>01234567</id> <title><[cdata[ 视频标题 ]]></title> <desp><[cdata[ 视频描述 ]]></desp> <tags><[cdata[ 标签 1 标签 2 标签 3]]></tags> <duration>12345</duration> <category>12345</category> <image>http://image.bokecc.com/abc.jpg</image> <imageindex>1</imageindex> <image-alternate> <index>0</index> <url>http://image.bokecc.com/abc0.jpg</url> </image-alternate> <image-alternate> <index>1</index> <url>http://image.bokecc.com/abc1.jpg</url> </image-alternate> <definition> <definitionlevel>0</definitionlevel> <definitiondesc> 普通 </definitiondesc> <terminaltype>0</terminaltype> <filesize>2839461</filesize> </definition> </video> JSON 格式的返回信息如下 :

{ "video":{ "id":"01234567", "title":" 视频标题 ", "desp":" 视频描述 ", "tags":" 标签 1 标签 2 标签 3", "duration":12345, "category":"12345", "image":"http://image.bokecc.com/abc.jpg", "imageindex":1, "image- alternate":[{ "index":0, "url":"http://image.bokecc.com/abc0.jpg",... ], "definition":[{ "definitionlevel": 2, "definitiondesc": " 清 ", "terminaltype": 0, "filesize": 6587147, ] 3.3 批量获取视频信息 a. 当地址为 http://spark.bokecc.com/api/videos 需要传递以下 : 通过该接 可以获取指定 户的 批有效视频 ( 不包括删除 正在处理的视频 ) 的信息, 地址为 : userid videoid_from videoid_to 户 id, 不可为空 起始 videoid, 若为空, 则从上传的第 个视频开始 终 videoid, 若为空, 则到最后 个上传的视频 num_per_page 返回信息时, 每 包含的视频个数注 : 允许范围为 1~100 page 当前 码 format 返回数据 videos 包含以下字段 : 返回格式,xml 或 json total video video 包含以下字段 : 返回视频数量 视频信息

id title desp tags duration category image imageindex 视频 ID 视频标题视频描述视频标签视频时, 单位秒视频分类 ID 视频截图地址视频截图序号 image-alternate image-alternate 包含以下字段 : 视频截图排列信息 index url XML 格式的返回信息如下 : 视频截图排列序号 视频截图地址 <?xml version="1.0" encoding="utf-8"?> <videos> <total>100</total> <video> <id>01234567</id> <title><[cdata[video Title]]></title> <desp><[cdata[video Description]]></desp> <tags><[cdata[tag1 tag2 tag3]]></tags> <duration>12345</duration> <category>12345</category> <image>http://image.bokecc.com/abc.jpg</image> <imageindex>1</imageindex> <image-alternate> <index>0</index> <url>http://image.bokecc.com/abc0.jpg</url> </image-alternate> <image-alternate> <index>1</index> <url>http://image.bokecc.com/abc1.jpg</url> </image-alternate>... </video>... </videos> JSON 格式的返回信息如下 :

{ "videos":{ "total":100, "video":[ { "id":"01234567", "title":"video Title", "desp":"video Description", "tags":"tag1 tag2 tag3", "duration":12345, "category":"12345", "image":"http://image.bokecc.com/abc.jpg", "imageindex":1, "image-alternate":[ { "index":0, "url":"http://image.bokecc.com/abc0.jpg", ], ] b. 当地址为 http://spark.bokecc.com/api/videos/v2 需要传递以下 : userid videoid_from videoid_to 户 id, 不可为空 起始 videoid, 若为空, 则从上传的第 个视频开始 终 videoid, 若为空, 则到最后 个上传的视频 num_per_page 返回信息时, 每 包含的视频个数注 : 允许范围为 1~100 page 当前 码 format 返回数据 videos 包含以下字段 : 返回格式,xml 或 json total video video 包含以下字段 : id title 返回视频数量视频信息视频 ID 视频标题

desp tags duration category image imageindex image-alternate 视频描述视频标签视频时, 单位秒视频分类 ID 视频截图地址视频截图序号视频截图排列信息 definition image-alternate 包含以下字段 : 视频 件 信息 index url definition 包含以下字段 : definitionlevel definitiondesc 视频截图排列序号视频截图地址视频清晰度值视频清晰度描述 terminaltype 终端类型 (0:PC 端,10: 移动端 ) filesize XML 格式的返回信息如下 : 视频 件

<?xml version="1.0" encoding="utf-8"?> <videos> <total>100</total> <video> <id>01234567</id> <title><[cdata[video Title]]></title> <desp><[cdata[video Description]]></desp> <tags><[cdata[tag1 tag2 tag3]]></tags> <duration>12345</duration> <category>12345</category> <image>http://image.bokecc.com/abc.jpg</image> <imageindex>1</imageindex> <image-alternate> <index>0</index> <url>http://image.bokecc.com/abc0.jpg</url> </image-alternate> <image-alternate> <index>1</index> <url>http://image.bokecc.com/abc1.jpg</url> </image-alternate> <definition> <definitionlevel>0</definitionlevel> <definitiondesc> 普通 </definitiondesc> <terminaltype>0</terminaltype> <filesize>2839461</filesize> </definition> </video>... </videos> JSON 格式的返回信息如下 :

{ "videos":{ "total":100, "video":[ { "id":"01234567", "title":"video Title", "desp":"video Description", "tags":"tag1 tag2 tag3", "duration":12345, "category":"12345", "image":"http://image.bokecc.com/abc.jpg", "imageindex":1, "image-alternate":[ { "index":0, "url":"http://image.bokecc.com/abc0.jpg", ], "definition":[ { "definitionlevel": 2, "definitiondesc": " 清 ", "terminaltype": 0, "filesize": 6587147, ], ] 3.4 获取视频播放代码 http://spark.bokecc.com/api/video/playcode 需要传递以下 : 通过该接 可以获取指定视频的视频播放 HTML 代码段, 地址为 : videoid userid playerid player_width player_height auto_play format 返回数据 video 包含以下字段 : 视频 id, 不可为空 户 id, 不可为空播放器 id, 若为空则返回默认播放器播放器宽度, 单位 px 播放器 度, 单位 px 是否 动播放,true 或 false 返回格式,xml 或 json

playcode XML 格式的返回信息如下 : 嵌 的播放代码 <?xml version="1.0" encoding="utf-8"?> <video> <playcode> <[CDATA[<script src='http://p.bokecc.com/player? vid=96479767c315e6a9&siteid=1936d297411c3a27&autostart=false&width=600&height=490&playerid =6ED7421AB96B522E&playertype=1' type='text/javascript'></script>]]> </playcode> </video> JSON 格式的返回信息如下 : { "video":{ "playcode":"<script src='http://p.bokecc.com/player? vid=96479767c315e6a9&siteid=1936d297411c3a27&autostart=false&width=600&height=490&playerid =6ED7421AB96B522E&playertype=1 type='text/javascript'></script>" 3.5 编辑视频信息 http://spark.bokecc.com/api/video/update 需要传递以下 : 通过该接 可以编辑指定视频的信息, 地址为 : videoid userid title tag description categoryid playurl 视频 id, 不可为空 户 id, 不可为空视频标题视频标签视频描述视频 分类 id 视频播放 地址, 如果不编辑播放地址, 请勿加 此 imageindex 视频封 截图序号, 如果不编辑封 截图, 请勿加 此 注 : 只可编辑正常可播放状态的视频截图 format 返回数据 video 包含如下字段 : id 返回格式,xml 或 json 视频 ID

title desp tags category playurl imageindex XML 格式的返回信息如下 : 视频标题视频描述视频标签视频分类 ID 视频播放 地址视频截图序号 <?xml version="1.0" encoding="utf-8"?> <video> <id>01234567</id> <title><[cdata[video Title]]></title> <desp><[cdata[video Description]]></desp> <tags><[cdata[tag1 tag2 tag3]]></tags> <category>12345</category> <playurl>http://xxxx/1.html</playurl> <imageindex>1</imageindex> </video> JSON 格式的返回信息如下 : { "video":{ "id":"01234567", "title":"video Title", "desp":"video Description", "tags":"tag1 tag2 tag3", "category":"12345", "playurl":"http://xxxx/1.html", "imageindex":1 3.6 删除视频 http://spark.bokecc.com/api/video/delete 需要传递以下 : 通过该接 可以删除指定视频的信息, 地址为 : videoid userid format XML 格式的返回信息如下 : 视频 id, 不可为空 户 id, 不可为空 返回格式,xml 或 json

<?xml version="1.0" encoding="utf-8"?> <result>ok</result> JSON 格式的返回信息如下 : { "result":"ok" 3.7 获取视频分类 http://spark.bokecc.com/api/video/category 需要传递以下 : 通过该接 可以获取指定 户创建的全部视频分类, 地址为 : userid 户 id, 不可为空 format 返回格式,xml 或 json 注 : 返回结果中的 level 包括 BASIC 和 PREMIUM,BASIC 中只包含 个默认 分类, 法创建 定义 分类, PREMIUM 版本中包含 户创建的 分类 返回数据 video 包含如下字段 : level category category 包含如下字段 : id name sub-category sub-category 包含如下字段 : id name XML 格式的返回信息如下 : 视频分类等级视频分类信息分类 ID 分类名称 分类信息 分类 ID 分类名称

<?xml version="1.0" encoding="utf-8"?> <video> <level>basic</level> <category> <id>123</id> <name><[cdata[category1]]></name> <sub-category> <id>456</id> <name><[cdata[sub category1]]></name> <sub-category>... </category>... </video> JSON 格式的返回信息如下 : { "video":{ "level":"premium", "category":[{ "id":123, "name":"category1", "sub-category":[{ "id":456, "name":"sub category1",... ],... ] 3.8 搜索视频 http://spark.bokecc.com/api/videos/search 需要传递以下 : 通过该接 可以搜索指定信息的视频, 地址为 : userid 户 id, 不可为空 q 查询条件, 不可为空 格式 : 查询字段 : 查询内容 查询字段 : 前只 持 TITLE 查询内容 : 查询关键字 注 : 格式中的 : 为英 半 Example:q=TITLE:test

sort 查询结果排序, 不可为空 格式 : 排序字段 : 排序 式 排序字段 :CREATION_DATE 或 FILE_SIZE 排序 式 :ASC 或 DESC 注 : 格式中的 : 为英 半 Example:sort=CREATION_DATE:DESC categoryid 视频 分类 id, 如果不查询指定分类下的视频, 请勿加 此 num_per_page 返回信息时, 每 包含的视频个数注 : 阈值为 1~100 page 当前 码 format 返回数据 videos 包含如下字段 : 返回格式,xml 或 json total video video 包含如下字段 : id title desp tags duration category creation-date filesize image XML 格式的返回信息如下 : 返回视频数量视频信息视频 ID 视频标题视频描述视频标签视频时, 单位秒视频分类 ID 视频创建时间视频 件, 单位字节视频截图地址

<?xml version="1.0" encoding="utf-8"?> <videos> <total>100</total> <video> <id>01234567</id> <title><[cdata[video Title]]></title> <desp><[cdata[video Description]]></desp> <tags><[cdata[tag1 tag2 tag3]]></tags> <duration>12345</duration> <category>12345</category> <creation-date>2012-10-29 15:16:50</creation-date> <filesize>4174340</filesize> <image>http://image.bokecc.com/abc.jpg</image>... </video>... </videos> JSON 格式的返回信息如下 : 4. 视频 件上传接 4.1 Flash 视频上传 Spark API 中所有的 Flash 接 需要 Flash 插件的版本在 10.1 以上才有效, 使 前请确保 Flash 插件版本符合要求 在上传视频的过程中, 不 与 Spark 平台进 HTTP 通信, 使 JavaScript 和 Spark 平台提供的 Flash 进 交互即可完成 关于如何在 中嵌 Flash 以及如何和 Flash 进 交互, 请参阅附录 2 上传接 到的所有 JavaScript 函数定义 下表 : { "videos":{ "total":100, "video":[ { "id":"01234567", "title":"video Title", "desp":"video Description", "tags":"tag1 tag2 tag3", "duration":12345, "category":"12345", "creation-date":"2012-10-29 15:16:50", "filesize":4174340, "image":"http://image.bokecc.com/abc.jpg", ] 函数定义 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) 嵌 Spark 平台提供的上传 Flash 时, 需要传递下列 : Flash (flashvars) progress: 上传进度 正确时,0~100 之间的整数, 包括 0 和 100; 错误时, 返回 -1. progress_interval 回调进度函数的时间间隔, 默认 1 秒 notify_url 上传 件的过程 共分为四步 : 第 步, 选择 件 http://p.bokecc.com/flash/api/uploader.swf Spark 平台提供 个透明的 Flash 进 件上传, 地址如下 : 由于它是透明的, 所以可以置于任何 个 HTML 元素的上 不影响的 视觉效果 上传 件时, 必须通过点击到该 Flash 从 打开浏览对话框进 件选择 件选择成功后,Flash 会调 中的 on_spark_selected_file 函数, 可以选择合适的 式处理该事件 第 步, 验证 当 户选择 件后, 需将下 的按照 THQS 算法处理后传递给 Flash 的 start_upload 函数后, 才能开始上传流程 先要进 和权限的验证, 通过后才开始 件上传 视频处理完毕后的通知地址 userid title description tag 户 id, 不可为空视频标题, 若为空, 则采 去后缀 件名作为 title 视频简介, 可以为空视频标签, 可以为空 categoryid 视频 分类 id, 可选 验证完成后,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 格式之 即为合法 : 1 http://domain 2 http://domain?data=****(data 为 户 定义的 ) 3 https://domain 4 https://domain?data=**** Spark 仅 持带有 个 户 定义的 notify_url, 若 notify_url 中携带有 户 定义的, 则在进 回调通知时会将 户 定义的和下表中的 起以 THQS 式进 加密 videoid status 视频 id,16 位 hex 字符串 视频状态 OK 表 视频处理成功, FAIL 表 视频处理失败 视频处理失败有多种情况, 例如视频 件异常 视频内容违规等等 <?xml version="1.0" encoding="utf-8"?> <result>ok</result> 当 notify_url 指定的接 返回上述 XML 时,Spark 平台会认为 站已经成功接收到了回调信息, 不再进 重试 返回其它任何内容,Spark 平台会进 回调重试, 重试的间隔会随着重试次数的增 增 若重试 7 次后, 依然没有成功, 则不再进 通知 因此,Spark 平台最多通知 8 次 这 8 次的通知时间距第 次的通知时间的差分别为 : duration ( 单位 : 秒 ) image [0,15s, 1m, 4m, 16m, 1h4m, 4h16m, 17h4m] 4.2 HTTP 视频上传 ( 断点续传 ) 此段 档 于指导使 CC 视频云平台 HTTP_API 接 编码来完成上传视频 件功能 userid 户 CC 视频云平台账号 ccvid 或 vid 户视频 件 ID CC 视频云平台指定 apikey 户 CC 视频云平台 API 的密钥 key 使 步骤 视频截图地址 1 户调 创建视频上传信息返回数据, 并提取 vid,metaurl,chunkurl 等返回数据 2 户调 上传视频 META 信息 (metaurl) 将 件描述等信息发送到服务器 3 户反复调 上传视频 件块 CHUNK(chunkurl) 将 件实际数据发送到服务器直到全部发完 4 如果调 上传视频 件块 CHUNK(chunkurl) 中间出现中断, 可使 断点续传 式上传视频 META 信息 (metaurl) 获取已发 件 度后继续调 上传视频 件块 CHUNK(chunkurl) 将 件发送完成

流程图 1 创建视频上传信息 通过该接 获取视频 VID, 上传 URL 等信息 此接 为后续调 提供 需使 THQS 算法将处理 http://spark.bokecc.com/api/video/create 需要传递以下 : 含义 userid title tag 户 id, 不可为空 视频标题 视频标签

含义 description 视频描述 categoryid 级分类 id( 主账号可选, 帐号不可为空 ) filename filesize notify_url 视频 件名 视频 件 视频处理完毕的通知地址 format 返回信息,xml 格式如下 : 返回信息,json 格式如下 : 异常返回格式 XML 格式 返回格式 : 包含 xml 和 json <?xml version="1.0" encoding="utf-8"?> <uploadinfo> <videoid>3b35ed608474b8db2bb</videoid> <userid>40ef004a6f1</userid> <servicetype>240593f08</servicetype> <metaurl><[cdata[http://abc.com/servlet/uploadmeta]]></metaurl> <chunkurl><[cdata[http://abc.com/servlet/uploadchunk]]> </chunkurl> </uploadinfo> { "uploadinfo": { "videoid": "3B35ED608474B8DB2BBA", "userid": 40EF004A6F", "servicetype": 240593F089", "metaurl": http://abc.com/servlet/uploadmeta", "chunkurl": "http://abc.com/servlet/uploadchunk" <? xml version="1.0" encoding="utf-8"?> <error>service_expired</error> JSON 格式 { "error":" SERVICE_EXPIRED " 错误码的定义如下表 : 错误码 含义 INVALID_REQUEST SPACE_NOT_ENOUGH 户输 错误 户剩余空间不

错误码 含义 SERVICE_EXPIRED PROCESS_FAIL TOO_MANY_REQUEST 户服务终 服务器处理失败 访问过于频繁 PERMISSION_DENY 2 上传视频 META 信息 http://*.bokecc.com/servlet/uploadmeta 需要传递以下 : 通过以下接 可以发送视频 件到平台接收服务器 : 户服务 权限 含义 uid 户 id, 不可为空断点续传请求时为可选 ccvid 视频 件 vid 不可为空 返回信息, 内容统 含义如下 result 结果成功 (0) 失败 (-1) msg 消息信息错误描述 received 已接收 件 度范围 0 到 件 xml 格式如下 : first 是否 次 first=1 表 次 断点续传为 次 first=2 filename 视频名称断点续传请求时为可选 md5 视频 件 md5 断点续传请求时为可选 filesize 视频 件 单位 Byte 断点续传请求时为可选 servicetype servicetype 来源于创建视频上传信息接 断点续传请求时为可选 format <?xml version="1.0" encoding="utf-8"?> <root> <result>0</result> <msg>success</msg> <received>0</received> </root> 返回信息,json 格式如下 : 返回格式 : 包含 xml 和 json 可选不选默认 json 返回

异常返回格式 xml 格式如下 : 返回信息,json 格式如下 : 3 上传视频 件块 CHUNK { "result": 0, "msg": success", "received": 0 <?xml version="1.0" encoding="utf-8"?> <root> <result>-1</result> <msg> 件写 错误 </msg> <received>-1</received> </root> { "result": -1, "msg": 件写 错误 ", "received": -1 http://*.bokecc.com/servlet/uploadchunk 需要传递以下 : 含义 ccvid vid, 视频 id 不可为空 format 返回信息, 内容统 含义如下 result 结果成功 (0) 失败 (-1) msg 消息信息错误描述 received 已接收 件 度范围 0 到 件 xml 格式如下 : 返回格式 : 包含 xml 和 json 可选不选默认 json 返回

<?xml version="1.0" encoding="utf-8"?> <root> <result>0</result> <msg>success</msg> <received>3413432</received> </root> 返回信息,json 格式如下 : 异常返回格式 xml 格式如下 : 返回信息,json 格式如下 : { "result": 0, "msg": success", "received": "412432" <?xml version="1.0" encoding="utf-8"?> <root> <result>-1</result> <msg> 件写 错误 </msg> <received>-1</received> </root> { "result": -1, "msg": 件写 错误 ", "received": -1" 此接 使 POST 式将实际 件的指定部分 进制数据发送到服务器, 服务器会返回已接收到的实际 件 度, 当服务器返回 件 度等于发送 件 度时即 件已发送完成 POST 协议详解 例 HTTP 协议需要 户修改 header 中 Content-Range 内容 Content-Range: bytes x-y/z x 表 该段数据在 件中的开始位置 == 上次请求返回 received 数值 y 表 该段数据在 件中的结束位置 z 表 件总 度 提醒 :y 表 件索引下标位置, 所以有 y <= z - 1 (binary) 部分为 件部分块 进制内容 ##### 报 格式 POST /servlet/uploadchunk HTTP/1.1

Accept: text/* Content-Type:multipart/form-data; boundary=----------ij5gi3gi3ei4gi3ei4km7gi3km7km7 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) Host: www.example.com Content-Length: 421 Connection: Keep-Alive Cache-Control: no-cache Content-Range: bytes 0-100/500 ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data;name="file";filename="myfile.jpg" Content-Type: application/octet-stream (binary) ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7-- 例代码 Java 版本代码 上传视频 件块 CHUNK 接 3 例代码 /* url 为 /servlet/uploadchunk?ccvid=&format= */ /* chunkstart 为 chunk 起始位置 */ /* chunkend 为 chunk 结束位置 */ /* file 为 件 */ /* bufferout 为实际 件输出 进制内容 */ public String uploadchunk(string url, int chunkstart, int chunkend, File file, byte[] bufferout) { HttpURLConnection conn = null; try { String BOUNDARY = "---------CCHTTPAPIFormBoundaryEEXX" + new Random().nextInt(65536); // 定义数据分隔线 URL openurl = new URL(url); conn = (HttpURLConnection)openUrl.openConnection(); // 发送 POST 请求必须设置如下两 conn.setdooutput(true); conn.setdoinput(true); conn.setusecaches(false); conn.setrequestmethod("post"); conn.setrequestproperty("connection", "Keep-Alive"); conn.setrequestproperty("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4)"); conn.setrequestproperty("charsert", "UTF-8"); conn.setrequestproperty("content-type", "multipart/form-data; boundary=" + BOUNDARY); // content-range conn.setrequestproperty("content-range", "bytes " + chunkstart + "-" + chunkend + "/" + file.length()); OutputStream out = new DataOutputStream(conn.getOutputStream()); StringBuilder sb = new StringBuilder(); sb.append("--").append(boundary).append("\r\n"); sb.append("content-disposition: form-data;name=\"file" + file.getname() + "\";filename=\"" + file.getname() + "\"\r\n"); sb.append("content-type: application/octet-stream\r\n"); sb.append("\r\n"); byte[] data = sb.tostring().getbytes(); out.write(data); out.write(bufferout);

out.write("\r\n".getbytes()); // 定义最后数据分隔线 byte[] end_data = ("--" + BOUNDARY + "--\r\n").getbytes(); out.write(end_data); out.flush(); out.close(); // 定义 BufferedReader 输 流来读取 URL 的响应 BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuffer resultbuf = new StringBuffer(""); String line = null; while ((line = reader.readline()) = null) { resultbuf.append(line); reader.close(); conn.disconnect(); return resultbuf.tostring(); catch (Exception e) { System.out.println(" 发送 POST 请求出现异常 " + e); e.printstacktrace(); finally { if (conn = null) conn.disconnect(); return null; 附录 1. HTTP 通信加密算法 当需要和 Spark 平台进 HTTP 通信时, 需要将原始的 Query String 转换为和请求时刻相关的 Hashed Query String 后再通过 GET 法请求 Spark API 为了描述的 便, 我们将 Query String 转换为 Hashed Query String 的算法称为 THQS 算法 在描述详细的算法流程之前, 我们先介绍 下 Unix 时间戳的概念 Unix 时间戳, 即该时间到 1970 年 1 1 (UTC/GMT 的午夜 ) 之间的秒数 例如, 北京时间 2010 年 12 9 15 点 23 分 12 秒的 Unix 时间戳为 1291879392 THQS 算法 假设原来的 QueryString 为 q, 通过以下 4 个步骤, 即可得到最终 于通信的 HashedQueryString: 1. 对于 q 中的每个键值对按照键的字 顺序升序排序, 得到排序后的请求字符串 qs; 2. 加 当前时间的 Unix 时间戳和 Spark 平台帐号对应的 API Key 值, 得到散列前的字符串 qf: qf qs&time=12345&salt=asdf1234 3. 计算得到 qf 的 md5 值, 假设为 abcdefg hash md5(qf) 4. 最终的 HashedQueryString 为 : hqs qs&time=12345&hash=abcdefg hqs 代替 q 进 Http 通信 下 举 个例 计算过程 假设 户从 Spark 获取到的 API Key 值是 asdf1234, 当前时间为 2010 年 12 9 15 点 23 分 12 秒, 原始的 QueryString 是 name=harry&level=top&salary=1000

Spark API 开发指南 第 步, 将上述 QueryString 按照字 顺序进 升序排序, 结果是 level=top&name=harry&salary=1000 第 步, 附加 time 值和 salt 值, 得到取 hash 前的字符串 level=top&name=harry&salary=1000&time=1291879392&salt=asdf1234 第三步, 对上述字符串取 md5 值 hash=bf04a55b30cff562f7add9f054ab7ffb 因此, 最终进 Http 通信的字符串为 level=top&name=harry&salary=1000&time=1291879392&hash=bf04a55b30cff562f7add9f054ab7ffb 附录 2. Flash 和 JavaScript 交互 Spark 平台的通信模式中, 有若干种 式需要通过与 中嵌 的 Flash 交互完成 Flash 和 有多种 式可以交互, 为了保证 Spark 平台提供的 Flash 能够在各种环境下都能正常 作, 推荐采 以下 式进 处理 先, 需要 将 swf 件嵌 到 中, 推荐采 swfobject 1.5 版本 将 swfobject.js 添加到 中后, 以下 js 语句将 swf 嵌 到 中, <script type="text/javascript"> var swfobj=new SWFObject('http://xxx/xx.swf', 'swfname', '80', '80', '8'); swfobj.addvariable('title','test'); swfobj.addvariable('number', 123); swfobj.addparam('allowfullscreen','true'); swfobj.addparam('allowscriptaccess','always'); swfobj.addparam('wmode','transparent'); swfobj.write('divid'); </script> 其次, 调 Flash 中的函数的时候, 如果 Flash 提供的函数名叫 func, 需要传递的是 param 的话, 那么下 这句就可以调 该函数 swfname["func"](param); 其中,swfname 是嵌 Flash 的 id 值