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

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

功能开发从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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值