上传视频信息
上传视频信息需要 Flash 插件的版本在 10.1 以上方可正常使用,请确保 Flash 插件版本符合要求。
上传视频流程
webapi方式
webservice方式
请求地址
HTTP请求方式
POST
请求参数
名称
|
格式
|
是否可空
|
说明
|
AppId
|
String
|
否
|
该系统在开放平台中的ID
|
Timestamp
|
String
|
否
|
时间参数,验证条件是当前时间与服务器时间误差不得超过10分钟(600秒),以北京时间为准。例如值为:1369898793;
获取方法如下: C#: (DateTime.Now.ToUniversalTime().Ticks-621355968000000000) /10000000;
Javascript:Math.round(new Date().getTime() /1000);
|
Token
|
String
|
否
|
令牌,取值方法为:Timestamp + AppSecret在进行MD5加密后的字符串(转换后字母都为小写),AppSecret为该系统在开放平台中的密钥)
|
VideoInfo
|
PostVideoModel
|
否
|
视频信息
|
名称
|
格式
|
是否可空
|
说明
|
VideoTitle
|
String
|
否
|
视频标题(最大长度为50字符,大于50字符只截取前50位)
|
Description
|
String
|
是
|
视频描述(最大长度为400字符,大于400字符只截取前400位)
|
Tags
|
String
|
是
|
视频标签(最大支持五个标签,标签之间用","隔开,最大长度为60字符,大于60字符只截取前60位)
|
Actors
|
String
|
是
|
视频主演(最大长度为50字符,大于50字符只截取前50位)
|
CreateUser
|
string
|
是
|
视频上传用户名(如果已对接UIA,请使用UIA用户名,否则,使用本系统内用户名,最大长度为50字符,大于50字符只截取前50位)
|
SourceFileGetType
|
int
|
否
|
服务器端获取视频方式(详细)
|
SourceFilePath
|
String
|
是
|
原视频地址(最大长度为200字符,大于200字符只截取前200位)
|
返回结果
JSON示例
{
"AuthMsg":
{"ResultCode":"1",
"ResultMessage":"OK"
},
"VideoId":"6d5ab866-9816-40a6-940f-2d67bc44c5d7"
}
返回结果参数说明
名称
|
格式
|
说明
|
ResultCode
|
string
|
接口调用结果编号(详细)
|
ResultMessage
|
string
|
接口调用结果信息(详细)
|
调用代码实例
var appId = "jctv";
var appSecret = "123456";
var dateTime = Math.round(new Date().getTime() / 1000) ;
//md5加密
var Token = hex_md5(dateTime + appSecret);
var o = { "Actors": "刘德华", "VideoTitle": "冰雨", "Description": "金曲", "Tags": "好听",
"SourceFileGetType": "1", "SourceFilePath": "" }
var urltotal = "http://open.ksedu.cn/Api/Video/Post?AppId="+appId+"&Timestamp="+dateTime+"&Token="+Token;
$.ajax({
url: urltotal,
cache: false,
data: o,
type: "POST",
dataType: 'json',
success: function (result) {
var showText = "ResultCode:" + result.AuthMsg.ResultCode
+ "\nResultMessage:" + result.AuthMsg.ResultMessage
+ "\nVideoId:" + result.VideoId;
alert(showText);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}
});
http请求
POST http://open.ksedu.cn/Api/Video/Post HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: open.ksedu.cn
Content-Length: 332
Connection: Keep-Alive
AppId=jctv&Timestamp=1425469889&Token=ef9d3b7a27eff34248287e37c2ba0eaa&VideoTitle=%E6%96%B0%E8%A7%86%E9%A2%91
&Description=%E8%A7%86%E9%A2%91%E6%8F%8F%E8%BF%B0&Tags=%E8%A7%86%E9%A2%91%E6%A0%87%E7%AD%BE
&Actors=%E8%A7%86%E9%A2%91%E4%B8%BB%E6%BC%94&SourceFileGetType=2&CreateUser=zhangsan
&SourceFilePath=http%3A%2F%2F192.168.1.61%3A10086%2Fvideo%2Ftest.mp4
http应答
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 04 Mar 2015 11:43:51 GMT
Content-Length: 100
{"AuthMsg":{"ResultCode":"1","ResultMessage":"OK"},"VideoId":"0e4f4df0-8482-4d6f-884d-d002a133554f"}
引用地址
调用方法
Post
请求参数
名称
|
格式
|
是否可空
|
说明
|
AppId
|
String
|
否
|
该系统在开放平台中的ID
|
Timestamp
|
String
|
否
|
时间参数,验证条件是当前时间与服务器时间误差不得超过10分钟(600秒),以北京时间为准。例如值为:1369898793;
获取方法如下: C#: (DateTime.Now.ToUniversalTime().Ticks-621355968000000000) /10000000;
Javascript:Math.round(new Date().getTime() /1000);
|
Token
|
String
|
否
|
令牌,取值方法为:Timestamp + AppSecret在进行MD5加密后的字符串(转换后字母都为小写),AppSecret为该系统在开放平台中的密钥)
|
VideoInfo
|
PostVideoModel
|
否
|
视频信息
|
名称
|
格式
|
是否可空
|
说明
|
VideoTitle
|
String
|
否
|
视频标题(最大长度为50字符,大于50字符只截取前50位)
|
Description
|
String
|
是
|
视频描述(最大长度为400字符,大于400字符只截取前400位)
|
Tags
|
String
|
是
|
视频标签(最大支持五个标签,标签之间用","隔开,最大长度为60字符,大于60字符只截取前60位)
|
Actors
|
String
|
是
|
视频主演(最大长度为50字符,大于50字符只截取前50位)
|
CreateUser
|
string
|
是
|
视频上传用户名(如果已对接UIA,请使用UIA用户名,否则,使用本系统内用户名,最大长度为50字符,大于50字符只截取前50位)
|
SourceFileGetType
|
int
|
否
|
服务器端获取视频方式(详细)
|
SourceFilePath
|
String
|
是
|
原视频地址(最大长度为200字符,大于200字符只截取前200位)
|
返回结果参数说明
AuthAppVideoBaseModel
名称
|
格式
|
说明
|
ResultCode
|
string
|
接口调用结果编号(详细)
|
ResultMessage
|
string
|
接口调用结果信息(详细)
|
服务器端获取视频文件说明
服务器端获取视频文件有两种方式:用户上传视频方式和服务器下载视频方式。
(1)用户上传视频方式:如果视频存在于用户本机中,请选用该方式,具体为在填写视频基本信息时,将SourceFileGetType置为1,并通过弹出窗口,将视频文件上传到服务器。
(2)服务器下载视频方式:如果视频存在于网络中的某个服务器中,请选用该方式,具体为在填写视频基本信息时,将SourceFileGetType置为2,并将SourceFilePath置为具体的视频地址,
例如 http://v.nje.cn:8091/2015_01/5C1501261327_89da256c728c44b_800k.mp4。
一、用户上传视频方式
弹出窗口形式
弹出层形式
视频基本信息填写时,参数“视频上传方式”必须填”1“,且视频源地址不用填写;基本信息保存成功后,服务器会返回视频Id,再引用开放平台提
供的initUploadWidget.js文件,根据下面的参数说明进行配置,提交信息后,开放平台会对信息进行验证,如果验证通过,则会弹出一个视频上传页面,否则,返回一个包含错误信息页面。
请求参数说明:
名称
|
格式
|
是否可空
|
说明
|
appId
|
String
|
否
|
该系统在开放平台中的ID
|
timestamp
|
String
|
否
|
时间参数。时间验证与服务器时间误差不得超过10分钟(600秒),以北京时间为准。
获取方法:C#: long nowTime = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000 例:1369898793
Javascript: Math.round(new Date().getTime() / 1000)
|
token
|
String
|
否
|
指timestamp+appSecret 在进行MD5加密后的字符串(转换后字母都为小写),appSecret为该系统在校园电视网中的密钥)
例如: timestamp为1370585811,appSecret为0123456789,加密前的字符串:13705858110123456789,加密后的字符串:c0c5ad4975c735e1c856d6a6b5d4310b
|
videoId
|
String
|
否
|
视频ID
|
uploadType
|
String
|
是
|
上传视频方式。flash方式则为"flash"(最高支持2G文件),silverlight方式为"silverlight"(最高支持6G文件,支持断点续传)。默认为flash方式
|
needHandleSepcial
|
Bool
|
是
|
特殊处理。True 进行特殊处理(只复制源文件),False 不进行特殊处理。默认为 False
|
请求事件说明:
名称
|
说明
|
onSuccess
|
上传完视频文件成功后执行的事件
|
onFailure
|
上传视频文件发生错误时执行的事件
|
onError
|
网络出现问题的时候执行的事件
|
返回结果:
1、若验证不通过,则返回结果在页面上以文字形式显示。例如:
ErrorCode : 104, ErrorMessage : App SecretKey Error
ErrorCode --返回代码
ErrorMessage --返回详细信息
2、若验证通过,则出现正常的上传页面。如下图:
调用代码实例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<title>上传视频</title>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/md5.js"></script>
<script src="http://open.ksedu.cn/Scripts/JKScripts/initUploadWidget.js" type="text/javascript"></script>
<script type="text/javascript">
function winopen() {
var appId = $("#AppId").val();
var appSecret = $("#AppSecret").val();
var t = Math.round(new Date().getTime() / 1000); //声明一个时间
var token = hex_md5(t + appSecret);//声明一个上传令牌。
jkUpload.openUpload({
//应用ID,由视频开放平台提供
appId: appId,
//视频ID
videoId: $("#videoId").val(),
//时间戳
timestamp: t,
//令牌
token: token,
//上传完视频文件后执行的事件
onSuccess: function () { alert("视频上传成功"); },
//上传视频文件出现错误发生的事件
onFailure: function () { alert("未上传视频或视频上传失败"); },
//网络出现问题的时候触发的事件
onError: function () { alert("error") }
});
}
</script>
</head>
<body>
<h1>上传视频文件:</h1>
<div>
<div>
<span class="itemNametop">AppId:</span> <input type="text" id="AppId"
value="f6f46cc8-02d3-44e8-bdf1-bfc87b6a3f39" /></div>
<div>
<span class="itemNametop">AppSecret:</span><input type="text" id="AppSecret"
value="e7f46cc8-02d3-44e8-bdf1-bfc87b6a3f39" /></div>
<div>
<span class="itemNametop">videoId:</span><input type="text" id="videoId"
value="000c1743-08b9-4584-b20c-75fe017b35ab" /></div>
</div>
<div>
<input type="button" onclick="winopen()" style="width: 80px;" value="上传" />
</div>
</html>
视频基本信息填写时,参数“视频上传方式”必须填”1“,且视频源地址不用填写;基本信息保存成功后,服务器会返回视频Id,再引用开放平台提
供的initUploadABoxWidget.js文件,根据下面的参数说明进行配置,提交信息后,开放平台会对信息进行验证,如果验证通过,则会弹出一个视频上传页面,否则,返回一个包含错误信息页面。
请求参数说明:
名称
|
格式
|
是否可空
|
说明
|
appId
|
String
|
否
|
该系统在开放平台中的ID
|
timestamp
|
String
|
否
|
时间参数。时间验证与服务器时间误差不得超过10分钟(600秒),以北京时间为准。
获取方法:C#: long nowTime = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000 例:1369898793
Javascript: Math.round(new Date().getTime() / 1000)
|
token
|
String
|
否
|
指timestamp+appSecret 在进行MD5加密后的字符串(转换后字母都为小写),appSecret为该系统在校园电视网中的密钥)
例如: timestamp为1370585811,appSecret为0123456789,加密前的字符串:13705858110123456789,加密后的字符串:c0c5ad4975c735e1c856d6a6b5d4310b
|
videoId
|
String
|
否
|
视频ID
|
isTop
|
bool
|
是
|
在页面存在iframe的弹出窗口时,是否覆盖最上层的窗口,默认为true
|
uploadType
|
String
|
是
|
上传视频方式。flash方式则为"flash"(最高支持2G文件),silverlight方式为"silverlight"(最高支持6G文件,支持断点续传)。默认为flash方式
|
needHandleSepcial
|
Bool
|
是
|
特殊处理。True 进行特殊处理(只复制源文件),False 不进行特殊处理。默认为 False
|
请求事件说明:
名称
|
说明
|
onSuccess
|
上传完视频文件成功后执行的事件
|
onFailure
|
上传视频文件发生错误时执行的事件
|
onError
|
网络出现问题的时候执行的事件
|
返回结果:
1、若验证不通过,则返回结果在页面上以文字形式显示。例如:
ErrorCode : 104, ErrorMessage : App SecretKey Error
ErrorCode --返回代码
ErrorMessage --返回详细信息
2、若验证通过,则出现正常的上传页面。如下图:
调用代码实例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<title>上传视频</title>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/md5.js"></script>
<script src="http://open.ksedu.cn/Scripts/JKScripts/initUploadABoxWidget.js" type="text/javascript"></script>
<script type="text/javascript">
function winopen() {
var appId = $("#AppId").val();
var appSecret = $("#AppSecret").val();
var t = Math.round(new Date().getTime() / 1000); //声明一个时间
var token = hex_md5(t + appSecret);//声明一个上传令牌。
jkUploadAlertBox.openUpload({
//应用ID,由视频开放平台提供
appId: appId,
//视频ID
videoId: $("#videoId").val(),
//时间戳
timestamp: t,
//令牌
token: token,
//距窗口左边的距离
left: "20px",
//距窗口上边的距离
top: "20px",
//是否覆盖整个浏览器,true:覆盖整个浏览器; false:覆盖局部区域(如果弹出层在iframe内部,
//则只覆盖iframe区域,其他情况同true)
isTop:true,
//上传完视频文件后执行的事件
onSuccess: function () { alert("视频上传成功"); },
//上传视频文件出现错误发生的事件
onFailure: function () { alert("未上传视频或视频上传失败"); },
//网络出现问题的时候触发的事件
onError: function () { alert("error"); }
});
}
</script>
</head>
<body>
<h1>上传视频文件:</h1>
<div>
<div>
<span class="itemNametop">AppId:</span> <input type="text" id="AppId"
value="f6f46cc8-02d3-44e8-bdf1-bfc87b6a3f39" /></div>
<div>
<span class="itemNametop">AppSecret:</span><input type="text" id="AppSecret"
value="e7f46cc8-02d3-44e8-bdf1-bfc87b6a3f39" /></div>
<div>
<span class="itemNametop">videoId:</span><input type="text" id="videoId"
value="000c1743-08b9-4584-b20c-75fe017b35ab" /></div>
</div>
<div>
<input type="button" onclick="winopen()" style="width: 80px;" value="上传" />
</div>
</html>
二、服务器下载视频方式
该方式只需在第一步上传视频信息中,将相应字段指定为如下的内容:参数“视频上传方式”填写为“2”,视频源地址填写为完整的视频源地址,包括视频扩展名,
例如 http://v.nje.cn:8091/2015_01/5C1501261327_89da256c728c44b_800k.mp4。
填写完毕后,提交信息,如果保存成功,则返回成功信息,否则,请根据返回错误信息,修改填写内容。
调用代码实例(c#方法)
public ActionResult PostMethodWebAPI(string videoTitle, string description, string tags, string actors,
int sourceFileGetType, string sourceFilePath, string appId, string appSecret)
{
//请求地址
string url = "http://open.ksedu.cn/Api/Video/Post";
//请求参数
Dictionary<, string> parameters = new Dictionary<string, string >();
//应用ID
parameters.Add("AppId", appId);
long dateTime = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
string token = MD5.HashUTF8(dateTime + appSecret);
//时间戳
parameters.Add("Timestamp", dateTime.ToString());
//令牌
parameters.Add("Token", token);
//视频标题
parameters.Add("VideoTitle", videoTitle);
//视频描述
parameters.Add("Description", description);
//视频标签
parameters.Add("Tags", tags);
//视频主演
parameters.Add("Actors", actors);
//视频上传用户名
parameters.Add("CreateUser", createUser);
//视频上传方式(这里应该为2)
parameters.Add("SourceFileGetType", sourceFileGetType.ToString());
//视频源地址(这里不能为空)
parameters.Add("SourceFilePath", sourceFilePath);
//请求方法
RequestMethod method = RequestMethod.Post;
//web请求(OAuth自定义库)
string result = OAuth.OAuth.Request(url, parameters, method);
return this.Json(new { result = result }, JsonRequestBehavior.AllowGet);
}
服务器将视频文件转码后,开放平台会通过调用回调地址的方式将转换后状态通知给第三方应用系统,参数包括VideoId、VideoStatus。如果返回状态为1,则该视频可正常播放。
参数说明
名称
|
说明
|
VideoId
|
视频Id
|
VideoStatus
|
视频状态
|
视频状态,具体参数含义如下:
视频状态
|
说明
|
0
|
等待删除
|
1
|
正常
|
2
|
等待下载
|
3
|
正在下载
|
4
|
下载失败
|
5
|
等待转码
|
6
|
正在转码
|
7
|
转码失败
|
8
|
未上传视频文件
|