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

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

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

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

一、视频上传。

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

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

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

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

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

0818b9ca8b590ca3270a3433284dd417.png

修改完成后,可以再加上自己的逻辑代码,将上传完成后返回的视频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

此次测试用的是这个版本

0818b9ca8b590ca3270a3433284dd417.png

LetvCloudV1.php

0818b9ca8b590ca3270a3433284dd417.png

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

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

/**

* 获取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 "

";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代码,对视频唯一码进行动态赋值就可以正常播放显示了。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值