乐视云视频PHP接口操作视频上传,编辑,查询以及删除

来源:互联网 发布:淘宝评价流程图 编辑:程序博客网 时间:2024/05/29 17:55

最近项目接触到和视频有关的功能,同事推荐了乐视云开放平台。了解后觉得还不错,可以一试,于是开始查询相关接口。

功能开发从15年11月3日开始,到2015年11月12日完成上传。基本功能也完毕。中间碰到了很多问题,这里把相关的代码整理一下,分享给有需要的人。

http://www.letvcloud.com/ 乐视云官网,开发前,你需要注册一个账号,获取到secret_key,方便后续开发。

一、视频上传。

联系官方技术后,收到了一个demo。我选用的web方式,修改部分代码后,完成了视频的上传。

demo下载地址:http://download.csdn.net/detail/happy7day/9265919


将demo中的html5Upload.js粘贴到项目中,在html页面中配置好路径,并修改uploadUrl的地址。


再将demo中lib文件夹中的Video.php粘贴到项目中,并修改video_init.php。

修改require文件的路径,再修改secretkey和user_unique


修改完成后,可以再加上自己的逻辑代码,将上传完成后返回的视频ID和视频唯一值存入数据库。

大家可以看到$videoid那里我做了一个减1的操作,是因为我保存传回的视频后,ID总是比真实ID大1,显示不正常,所以做了减1操作后就正常了,大家可以留意一下。

到这里,上传就结束了。


二、查询视频

http://help.letvcloud.com/Wiki.jsp?page=ResourceDownload

下载php sdk接口,粘贴到项目中

测试过程中可以参考http://help.letvcloud.com/Wiki.jsp?page=VideoManagement 视频的api和应用参数

需要注意的是sign的构造

调试工具使用 http://115.182.94.62/tools/index.php

此次测试用的是这个版本


LetvCloudV1.php


修改类文件的配置,将参数对应填上。

再修改类文件最后一个方法。

 /**     * 获取HTTP请求结果     * @param $api API名称 , 如:video.get     * @param $apiParams API业务参数     * @return string     */    public function httpCall($api,$apiParams){    //组装系统参数$sysParams["api"] = $api;$sysParams['format'] = $this->format;//$sysParams['timestamp'] = time();    $sysParams['user_unique'] = $this->user_unique;//$sysParams['timestamp'] = "1369300735578";$sysParams['ver'] = $this->apiVersion;//echo "<pre>";print_r($apiParams);exit;    //参数集合=系统参数+业务参数    $params = array_merge($sysParams, $apiParams);    //$params = $apiParams;    //构造请求URL    $resurl = '';    $resurl .= $this->restUrl;        //签名//$params['sign'] = $this->generateSign($params);$params['sign'] = $apiParams["sign"];//参数放入GET请求串foreach($params as $key=>$v){if(!strpos($resurl, '?')){$resurl .= "?{$key}=" . urlencode($v);}else{  $resurl .="&{$key}=" . urlencode($v);}}//echo htmlspecialchars($resurl);exit;    //发起HTTP请求$respObj = $this->curl($resurl);return $respObj;    }
最后这个方法修改的地方主要有两个,一个是timestamp的赋值,还有一个是$params['sign']的赋值。

修改这两个地方主要是因为调试发现传入参数不一致。不知道是不是接口版本的问题。

查,删,改视频,用到的都是这个方法,类文件中其他的方法使用后会报402错误,咨询过官方技术客服,但是还是不清楚具体的原因。

关于时间戳需要提前说一下,不可以使用time()直接获取,因为获取到的是10位的,而接口需要提供的是13位的。所以我找了个方法得到13位的时间戳,可以直接使用。

/** * * 返回一定位数的时间戳,多少位由参数决定 * * @author 陈博 * @param type 多少位的时间戳 * @return 时间戳 */function getTimestamp($digits = false) {$digits = $digits > 10 ? $digits : 10;$digits = $digits - 10;if ((!$digits) || ($digits == 10)){return time();}else{return number_format(microtime(true),$digits,'','');}}
每一次操作都要先实例化接口
include("../libs/LetvCloudV1.php");/*乐视云*/$letvcloud=new LetvCloudV1();//创建对象

/** * 获取单个视频信息 * @param  int $video_id 视频id * @return string */$api="video.get";$format="json";//$timestamp=time();$timestamp=getTimestamp('13');$user_unique = "改成你们自己的";$ver="2.0";$secret_key = "改成你们自己的";     // 用户仪表盘上的私钥$str1="api".$api."format".$format."timestamp".$timestamp."user_unique".$user_unique."ver".$ver."video_id".$videoid.$secret_key;$md5sign=md5($str1);$video_id=$videoid;$apiParams=array();$apiParams["api"]=$api;$apiParams["format"]="json";$apiParams["timestamp"]=$timestamp;$apiParams["user_unique"]=$user_unique;$apiParams["ver"]=$ver;$apiParams["video_id"]=$video_id;$apiParams["sign"]=$md5sign;$videoinfo = $letvcloud->httpCall("video.get",$apiParams);$jsonArray = json_decode($videoinfo,true);//var_dump($jsonArray);
查询视频传递的签名原文字符串,因为不涉及到中文,所以不需要考虑编码的因素,但是编辑的时候就需要考虑了。

返回的json转换为数组后,大家可以根据数组传回的值自行赋值到页面上了。视频的查询就到这里。


三、视频的编辑

        $txtvideoname=mb_convert_encoding($_POST["txtvideoname"],"UTF-8","GB2312");//页面传来的$txtag=mb_convert_encoding($_POST["txtag"],"UTF-8","GB2312");//页面传来的$txtinfo=mb_convert_encoding($_POST["txtinfo"],"UTF-8","GB2312");//页面传来的$ispay=$_POST["hidispay"];//页面传来的//构造sign$api="video.update";$format="json";$timestamp=getTimestamp('13');$user_unique = "改成你自己的";$ver="2.0";$secret_key = "改成你自己的";     // 用户仪表盘上的私钥$str2="api".$api."format".$format."is_pay".$ispay."tag".$txtag."timestamp".$timestamp."user_unique".$user_unique."ver".$ver."video_desc".$txtinfo."video_id".$_POST["hidedit"]."video_name".$txtvideoname.$secret_key;$md5sign= md5($str2);$apiParams=array();$apiParams["api"]=$api;$apiParams["format"]=$format;$apiParams["is_pay"]=$ispay;$apiParams["tag"]=$txtag;$apiParams["timestamp"]=$timestamp;$apiParams["user_unique"]=$user_unique;$apiParams["ver"]=$ver;$apiParams["video_desc"] = $txtinfo;$apiParams["video_id"]=$_POST["hidedit"];$apiParams["video_name"]=$txtvideoname;$apiParams["sign"]=$md5sign;$videoupdate = $letvcloud->httpCall("video.update",$apiParams);$jsonArray = json_decode($videoupdate,true);if($jsonArray["code"]==0){$msg_type=1;show_msgbox("修改成功","url.php");exit();}
在编辑视频中最重要的就是sign的构造。以及url的构造。

四、视频删除

if($delid){$api="video.del";$format="json";$timestamp=getTimestamp('13');$user_unique = "改成你自己的";$ver="2.0";$secret_key = "改成你自己的";     // 用户仪表盘上的私钥$str1="api".$api."format".$format."timestamp".$timestamp."user_unique".$user_unique."ver".$ver."video_id".$delid.$secret_key;$md5sign=md5($str1);$video_id=$delid;$apiParams=array();$apiParams["api"]=$api;$apiParams["format"]="json";$apiParams["timestamp"]=$timestamp;$apiParams["user_unique"]=$user_unique;$apiParams["ver"]=$ver;$apiParams["video_id"]=$video_id;$apiParams["sign"]=$md5sign;$videoinfo = $letvcloud->httpCall("video.del",$apiParams);$jsonArray = json_decode($videoinfo,true);if($jsonArray["code"]==0){//改成你自己的逻辑删除操作show_msgbox("删除成功","url.php");exit();}}

五、视频播放。

视频播放只需要提供一些固定参数就可以了,进入乐视云平台的控制台中找到视频列表,获取js代码,对视频唯一码进行动态赋值就可以正常播放显示了。


大家不懂的地方可以向技术客服提问。

因为现在还是初级版本,所以过程中有些地方不是很好理解,但是相信未来会越来越完善。


3 0
原创粉丝点击