Video/api
第4行: | 第4行: | ||
==视频上传基本流程== | ==视频上传基本流程== | ||
− | + | 微博提供视频分片上传服务,支持断点续传,主要包含如下两个步骤: | |
[https://api.weibo.com/2/proxy/media/init media/init 初始化获取视频分片大小] | [https://api.weibo.com/2/proxy/media/init media/init 初始化获取视频分片大小] | ||
第93行: | 第93行: | ||
!width="75%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段说明 | !width="75%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段说明 | ||
{{rdes_args|res|string|成功或失败,true或false}} | {{rdes_args|res|string|成功或失败,true或false}} | ||
− | {{rdes_args|partNumber|string| | + | {{rdes_args|partNumber|string|视频分片编号,从0开始}} |
{{rdes_args|fid|string|视频对象ID,最后一个分片上传成功之后才返回}} | {{rdes_args|fid|string|视频对象ID,最后一个分片上传成功之后才返回}} | ||
|} | |} | ||
第105行: | 第105行: | ||
fid : 1034:7588a824bf75c8c1dc263450dc324c2b (最后一个分片上传成功后才返回) | fid : 1034:7588a824bf75c8c1dc263450dc324c2b (最后一个分片上传成功后才返回) | ||
} | } | ||
+ | </pre> | ||
+ | |||
+ | ==PHP Client SDK== | ||
+ | 视频上传初始化 | ||
+ | <pre> | ||
+ | //请求相关参数 | ||
+ | $init_querys = array( | ||
+ | //'source' => $source, | ||
+ | 'name' => $file_name, | ||
+ | 'check' => $content_md5, //完整文件md5 | ||
+ | 'length' => $file_size, | ||
+ | 'uid' => $uid, | ||
+ | 'text' => rawurlencode($text), | ||
+ | 'access_token' => "***", //oauth授权后获取 | ||
+ | ); | ||
+ | $headers = array(); | ||
+ | //调用初始化接口 | ||
+ | $init_res = curl_get($init_uri, $init_querys, $headers); | ||
+ | $init_decode = json_decode($init_res, true); | ||
+ | echo $init_decode['uploadId'] . "\n"; | ||
+ | </pre> | ||
+ | 视频分片上传 | ||
+ | <pre> | ||
+ | for($part_no = 0;$part_no < $slice_count;$part_no++) { | ||
+ | //循环分片上传,分片编号从0开始 | ||
+ | $upload_querys = array( | ||
+ | 'source' => $source, | ||
+ | 'partNumber' => $part_no, | ||
+ | 'uploadId' => $upload_id, | ||
+ | 'sliceCheck' => $slice_md5, //分片md5 | ||
+ | 'access_token' => "***", | ||
+ | ); | ||
+ | $slice_res = curl_post($upload_uri, $upload_querys, $headers, $slice_content); | ||
+ | |||
+ | var_dump($slice_res); | ||
+ | $info_dec = json_decode($slice_res, true); | ||
+ | if($info_dec['ret'] == "false") { | ||
+ | //分片失败重传 | ||
+ | } | ||
+ | } | ||
</pre> | </pre> | ||
第116行: | 第156行: | ||
!width="40%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|错误msg | !width="40%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|错误msg | ||
!width="45%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|描述 | !width="45%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|描述 | ||
− | {{rdes_args| | + | {{rdes_args|001|Appkey missing|appkey参数缺失}} |
− | {{rdes_args| | + | {{rdes_args|002|Invalid appkey|appkey无效}} |
+ | {{rdes_args|003|Param missing|param参数缺失}} | ||
+ | {{rdes_args|004|Slice content missing|分片内容缺失}} | ||
+ | {{rdes_args|005|Invalid uploadId|uploadId无效}} | ||
+ | {{rdes_args|006|Donot support chunked|分片异常}} | ||
+ | {{rdes_args|007|uploadId missing|uploadId缺失}} | ||
+ | {{rdes_args|008|This uploadId has expired|uploadId过期}} | ||
+ | {{rdes_args|009|Internal error|网络异常}} | ||
+ | {{rdes_args|010|Unsupport this file type|文件格式不支持}} | ||
+ | {{rdes_args|011|Please check client locale settings|本地设置异常}} | ||
+ | {{rdes_args|012|Slice check md5 does not match|分片内容异常}} | ||
|} | |} |
2016年6月3日 (五) 17:20的版本
目录 |
视频上传服务OPEN API
视频上传接口授权机制
目前微博开放平台用户身份鉴权采用的是Oauth2.0,参见如何登录授权
视频上传基本流程
微博提供视频分片上传服务,支持断点续传,主要包含如下两个步骤:
视频大小和时长限制:
最大1G,时长15分钟
视频格式限制:
mp4,avi,wmv,mpeg,mpg,3gp,ts,flv,mov
视频上传初始化
URL : https://api.weibo.com/2/proxy/media/init [GET]
说明:视频上传初始化,获取视频上传ID和分片大小
参数:
参数字段 | 字段必选 | 字段类型 | 字段说明 |
---|---|---|---|
access_token | true | string | 采用OAuth授权方式为必填参数,OAuth授权后获得 |
name | true | string | 视频名称,必须带视频文件后缀 |
check | true | string | 整个视频文件的md5 |
length | true | string | 视频文件大小,单位字节 |
uid | true | string | 微博用户uid |
text | false | string | 微博文本内容,必须做URLencode,内容不超过130个汉字,默认空时不发微博 |
visible | false | string | 微博属性,0:公开发布,1:仅自己可见 |
cu | false | string | 第三方可提供回调接口,用于视频上传转码之后通知,默认空 |
ua | false | string | 用户ua属性 |
返回:
参数字段 | 字段必选 | 字段说明 |
---|---|---|
res | string | 成功或失败,true或false |
uploadId | string | 视频上传ID |
length | string | 视频分片大小,单位字节 |
示例:
{ res : true uploadId : 1425623419.093.de1f9ded7911efac25c137bccf1a4019.r11 length : 256000 }
视频文件分片上传
URL : https://api.weibo.com/2/proxy/media/upload [GET/POST]
说明:视频分片上传
参数:
参数字段 | 字段必选 | 字段类型 | 字段说明 |
---|---|---|---|
access_token | true | string | 采用OAuth授权方式为必填参数,OAuth授权后获得 |
uploadId | true | string | 视频上传ID |
sliceCheck | true | string | 视频分片的md5 |
content | true | string | 视频分片数据,放在postfield中 |
返回:
参数字段 | 字段必选 | 字段说明 |
---|---|---|
res | string | 成功或失败,true或false |
partNumber | string | 视频分片编号,从0开始 |
fid | string | 视频对象ID,最后一个分片上传成功之后才返回 |
示例:
{ res : true partNumber : 1 fid : 1034:7588a824bf75c8c1dc263450dc324c2b (最后一个分片上传成功后才返回) }
PHP Client SDK
视频上传初始化
//请求相关参数 $init_querys = array( //'source' => $source, 'name' => $file_name, 'check' => $content_md5, //完整文件md5 'length' => $file_size, 'uid' => $uid, 'text' => rawurlencode($text), 'access_token' => "***", //oauth授权后获取 ); $headers = array(); //调用初始化接口 $init_res = curl_get($init_uri, $init_querys, $headers); $init_decode = json_decode($init_res, true); echo $init_decode['uploadId'] . "\n";
视频分片上传
for($part_no = 0;$part_no < $slice_count;$part_no++) { //循环分片上传,分片编号从0开始 $upload_querys = array( 'source' => $source, 'partNumber' => $part_no, 'uploadId' => $upload_id, 'sliceCheck' => $slice_md5, //分片md5 'access_token' => "***", ); $slice_res = curl_post($upload_uri, $upload_querys, $headers, $slice_content); var_dump($slice_res); $info_dec = json_decode($slice_res, true); if($info_dec['ret'] == "false") { //分片失败重传 } }
错误代码
错误码
错误码 | 错误msg | 描述 |
---|---|---|
001 | Appkey missing | appkey参数缺失 |
002 | Invalid appkey | appkey无效 |
003 | Param missing | param参数缺失 |
004 | Slice content missing | 分片内容缺失 |
005 | Invalid uploadId | uploadId无效 |
006 | Donot support chunked | 分片异常 |
007 | uploadId missing | uploadId缺失 |
008 | This uploadId has expired | uploadId过期 |
009 | Internal error | 网络异常 |
010 | Unsupport this file type | 文件格式不支持 |
011 | Please check client locale settings | 本地设置异常 |
012 | Slice check md5 does not match | 分片内容异常 |