|
|
第1行: |
第1行: |
− | =视频上传服务OPEN API= | + | =视频上传 OPEN API= |
− | ==视频上传接口授权机制==
| + | |
− | 目前微博开放平台用户身份鉴权采用的是Oauth2.0,参见[http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E 如何登录授权]
| + | |
| | | |
− | ==视频上传基本流程== | + | <div class="wiki_txtJ"> |
− | 微博提供视频分片上传服务,支持断点续传,主要包含如下两个步骤:
| + | 微博为广大自媒体作者、机构、具备拍摄功能的硬件厂商等,提供短视频上传接口,可以将视频内容上传、并发布到微博。 |
| | | |
− | [https://upload.api.weibo.com/2/proxy/media/init media/init 初始化获取视频分片大小]
| |
| | | |
− | [https://upload.api.weibo.com/2/proxy/media/upload media/upload 开始分片上传]
| + | 根据相关规定,视频服务需具备相关资质,因此接口文档暂不公开。 |
| | | |
| | | |
− | 视频大小和时长限制:
| + | 如果第三方需要与微博进行视频相关的接入合作,请联系 商务合作:[mailto:weibo_app@vip.sina.com weibo_app@vip.sina.com] 进行洽谈,索取视频上传接口文档。 |
| | | |
− | 最大1G,时长15分钟
| + | <div style="width:100%;display:table;margin-top:20px;"> |
| + | <div style="width:50%;display:table;float:left;"> |
| + | <div style="width:90%;height:50px;padding:10px;border:1px solid #CEE1EE;"> |
| + | <div style="width:50px;height:50px;float:left;"><img src="http://tp2.sinaimg.cn/1904178193/50/5689657598/0" /></div> |
| + | <div style="float:left;margin-left:15px;">[http://weibo.com/openapi 微博开放平台]</div> |
| + | </div> |
| + | </div> |
| + | </div> |
| | | |
| + | </div> |
| | | |
− | 视频格式限制:
| |
| | | |
− | mp4,avi,wmv,mpeg,mpg,3gp,ts,flv,mov
| |
| | | |
− | ==视频上传初始化==
| + | __NOTOC__ |
− | URL : https://upload.api.weibo.com/2/proxy/media/init [GET]
| + | {{#a:nobtns|noheading}} |
− | | + | |
− | 说明:视频上传初始化,获取视频上传ID和分片大小
| + | |
− | | + | |
− | 参数:
| + | |
− | | + | |
− | {| border="1" cellspacing="0" cellpadding="0" width="100%" class="parameters" style="border-color:#CCCCCC;" | + | |
− | |-
| + | |
− | !width="15%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|参数字段
| + | |
− | !width="10%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段必选
| + | |
− | !width="10%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段类型
| + | |
− | !width="65%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段说明
| + | |
− | {{api_args|access_token|true|string|采用OAuth授权方式为必填参数,OAuth授权后获得}} | + | |
− | {{api_args|name|true|string|视频名称,必须带视频文件后缀}}
| + | |
− | {{api_args|check|true|string|整个视频文件的md5}}
| + | |
− | {{api_args|length|true|string|视频文件大小,单位字节}}
| + | |
− | {{api_args|uid|true|string|微博用户uid}}
| + | |
− | {{api_args|text|false|string|微博文本内容,必须做URLencode,内容不超过130个汉字,默认空时不发微博}}
| + | |
− | {{api_args|visible|false|string|微博属性,0:公开发布,1:仅自己可见}}
| + | |
− | {{api_args|cu|false|string|第三方可提供回调接口,用于视频上传转码之后通知视频播放地址,默认空}}
| + | |
− | {{api_args|ua|false|string|用户ua属性}}
| + | |
− | |}
| + | |
− | | + | |
− | 返回:
| + | |
− | | + | |
− | {| border="1" cellspacing="0" cellpadding="0" width="100%" class="parameters" style="border-color:#CCCCCC;"
| + | |
− | |-
| + | |
− | !width="15%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|参数字段
| + | |
− | !width="10%" 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|uploadId|string|视频上传ID}}
| + | |
− | {{rdes_args|length|string|视频分片大小,单位字节}}
| + | |
− | |}
| + | |
− | | + | |
− | 示例:
| + | |
− | | + | |
− | <pre>
| + | |
− | {
| + | |
− | res : true
| + | |
− | uploadId : 1425623419.093.de1f9ded7911efac25c137bccf1a4019.r11
| + | |
− | length : 256000
| + | |
− | }
| + | |
− | </pre>
| + | |
− | | + | |
− | ==视频文件分片上传==
| + | |
− | URL : https://upload.api.weibo.com/2/proxy/media/upload [GET/POST]
| + | |
− | | + | |
− | 说明:视频分片上传
| + | |
− | | + | |
− | 参数:
| + | |
− | | + | |
− | {| border="1" cellspacing="0" cellpadding="0" width="100%" class="parameters" style="border-color:#CCCCCC;"
| + | |
− | |-
| + | |
− | !width="15%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|参数字段
| + | |
− | !width="10%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段必选
| + | |
− | !width="10%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段类型
| + | |
− | !width="65%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|字段说明
| + | |
− | {{api_args|access_token|true|string|采用OAuth授权方式为必填参数,OAuth授权后获得}}
| + | |
− | {{api_args|uploadId|true|string|视频上传ID}}
| + | |
− | {{api_args|partNumber|true|int|视频分片编号,从0开始}}
| + | |
− | {{api_args|sliceCheck|true|string|视频分片的md5}}
| + | |
− | {{api_args|content|true|string|视频分片数据,放在postfield中}}
| + | |
− | |}
| + | |
− | | + | |
− | 返回:
| + | |
− | | + | |
− | {| border="1" cellspacing="0" cellpadding="0" width="100%" class="parameters" style="border-color:#CCCCCC;"
| + | |
− | |-
| + | |
− | !width="15%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|参数字段
| + | |
− | !width="10%" 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|partNumber|string|视频分片编号,从0开始}}
| + | |
− | {{rdes_args|fid|string|视频对象ID,最后一个分片上传成功之后才返回}}
| + | |
− | |}
| + | |
− | | + | |
− | 示例:
| + | |
− | | + | |
− | <pre>
| + | |
− | {
| + | |
− | res : true
| + | |
− | partNumber : 1
| + | |
− | 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>
| + | |
− | | + | |
− | ==错误代码==
| + | |
− | | + | |
− | 错误码
| + | |
− | | + | |
− | {| border="1" cellspacing="0" cellpadding="0" width="100%" class="parameters" style="border-color:#CCCCCC;"
| + | |
− | |-
| + | |
− | !width="15%" style="text-align:left;padding-left:5px;font-weight:bolder;border:1px solid #cccccc"|错误码
| + | |
− | !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"|描述
| + | |
− | {{rdes_args|001|Appkey missing|appkey参数缺失}}
| + | |
− | {{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|分片内容异常}}
| + | |
− | |}
| + | |