乐视云视频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代码,对视频唯一码进行动态赋值就可以正常播放显示了。
大家不懂的地方可以向技术客服提问。
因为现在还是初级版本,所以过程中有些地方不是很好理解,但是相信未来会越来越完善。
- 乐视云视频PHP接口操作视频上传,编辑,查询以及删除
- Asp.net MVC4 中的视频上传和视频截图,以及删除上传文件
- php上传视频
- php视频上传
- php 断点视频上传
- thinkphp-上传视频操作
- thinkphp-上传视频操作
- 百度编辑工具单独上传图片、视频
- php 上传视频的代码,
- php视频上传超简单
- php视频上传超简单
- 网易视频云 php接口
- 编辑视频
- php 上传视频 配置 php.ini
- phalapi框架接口实现视频上传
- 百度编辑器上传视频以及视频编辑器预览bug解决
- PHP 图片上传 (AIP图片上传接口,视频上传同理,只需改动jpg,png等为mp4,flv等)
- java 上传文件以及各种视频图片!
- SharedPreference判断应用是否是第一次启动
- 关于C++的容器
- oracle11g 导出空表
- There is only one kind of failure,that is to give up halfway.
- xxx.tar.xz文件如何解压
- 乐视云视频PHP接口操作视频上传,编辑,查询以及删除
- 同步与异步的概念
- Unity研究院之提前获取粒子特效的播放时长
- 在Repeater中嵌套使用Repeater
- java import、package作用与用法
- Android解决ViewPager嵌套Fragment,Fragment嵌套ViewPager滑动冲突
- 动手写 framebuffer 画点、划线程序 (七)
- 大鱼吃小鱼游戏-ane.js
- Codeforces 597A Divisibility 【数学计数】