阿里雲的點播sdk封裝到同一個類里面了,調用的時候分方便
1.首先下載 aliyun-php-sdk(不知道的自行去阿里雲文檔上搜索下載)
2.把零散的方法放到同一個類里面
<?php require_once './aliyun-php-sdk/aliyun-php-sdk-core/Config.php'; // 假定您的源碼文件和aliyun-php-sdk處於同一目錄 use vod\Request\V20170321 as vod; use Sts\Request\V20150401 as Sts; class AliyunVideo { //private $accessKeyId = 'zsZ'; //private $accessKeySecret = 'myQkfV'; private $accessKeyId = 'uWLFMAO'; private $accessKeySecret = '5FS1b39QnRdzRNVWp'; private $regionId = 'cn-shanghai'; // 點播服務所在的Region,國內請填cn-shanghai,不要填寫別的區域 private $endpoint = 'sts.cn-shanghai.aliyuncs.com'; private $client = null ; private $sts = null ; public function __construct(){ try { $this -> init_vod_client($this -> accessKeyId,$this -> accessKeySecret); } catch (Exception $e) { print $e->getMessage(); } } /** * @desc 初始化客戶端 * @param [type] $accessKeyId [description] * @param [type] $accessKeySecret [description] * @return [type] [description] */ public function init_vod_client($accessKeyId, $accessKeySecret) { //初始化視頻客戶端 $profile = DefaultProfile::getProfile($this -> regionId, $accessKeyId, $accessKeySecret); $this -> client = new DefaultAcsClient($profile); //初始化sts授權策略客戶端 DefaultProfile::addEndpoint($this -> regionId, $this -> regionId, "Sts", $this -> endpoint); $iClientProfile = DefaultProfile::getProfile($this -> regionId, $accessKeyId, $accessKeySecret); $this -> sts = new DefaultAcsClient($iClientProfile); } /** * @desc 刷新視頻上傳憑證 * @param [type] $client [description] * @param [type] $videoId [description] * @return [type] [description] */ function refresh_upload_video( $videoId) { $request = new vod\RefreshUploadVideoRequest(); $request->setVideoId($videoId); $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc [獲取上傳地址和憑證] * @param [type] $client [description] * @param array $fileInfo = array(); * @return [type] [description] */ public function create_upload_video($fileInfo) { $request = new vod\CreateUploadVideoRequest(); $request->setTitle($fileInfo['title']); // 視頻標題(必填參數) $request->setFileName($fileInfo['filename']); // 視頻源文件名稱,必須包含擴展名(必填參數) $request->setDescription($fileInfo['desc']); // 視頻源文件描述(可選) //$request->setCoverURL("http://img.alicdn.com/tps/TB1qnJ1PVXXXXXCXXXXXXXXXXXX-700-700.png"); // 自定義視頻封面(可選) if($fileInfo['thumb']){ $request -> setCoverURL($fileInfo['thumb']) ; } if($fileInfo['catid']){ $request -> setCateId($fileInfo['catid']) ; } if($fileInfo['tags']){ $request -> setTags($fileInfo['tags']); } $request->setAcceptFormat('JSON'); return $this -> client -> getAcsResponse($request); } /** * @desc 獲取播放地址接口 * @param [type] $client [為上面init_vod_client接口返回的客戶端對象] * @param [type] $videoId [為視頻ID] * @return [type] [description] */ public function get_play_info( $videoId) { $request = new vod\GetPlayInfoRequest(); $request->setVideoId($videoId); $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 獲取sts授權策略信息 * @author 646943067@qq.com * @version 1.0 * @date 2018-11-27 */ public function getStsInfo(){ $roleArn = "acs:ram::1357249633099392:role/aliyunvoduploadauth"; //角色資源描述符,在RAM的控制台的資源詳情頁上可以獲取 // 在扮演角色(AssumeRole)時,可以附加一個授權策略,進一步限制角色的權限; // 詳情請參考《RAM使用指南》 // 此授權策略表示讀取所有OSS的只讀權限 $policy=<<<POLICY { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::1357249633099392:root" ] } } ], "Version": "1" } POLICY; $request = new Sts\AssumeRoleRequest(); // RoleSessionName即臨時身份的會話名稱,用於區分不同的臨時身份 // 您可以使用您的客戶的ID作為會話名稱 $request->setRoleSessionName("client_name"); $request->setRoleArn($roleArn); $request->setPolicy($policy); $request->setDurationSeconds(3600); try { $response = $this -> sts ->getAcsResponse($request); print_r($response); } catch(ServerException $e) { print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n"; } catch(ClientException $e) { print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n"; } } /** * @desc 刪除媒體流 * 可刪除視頻流或音頻流信息及存儲文件,並支持批量刪除;刪除后當CDN緩存過期,該路流會無法播放,請謹慎操作 * @param [type] $client [description] * @param [type] $videoId [description] * @param [type] $jobIds [description] * @return [type] [description] */ function delete_stream( $videoId, $jobIds) { $request = new vod\DeleteStreamRequest(); $request->setVideoId($videoId); $request->setJobIds($jobIds); // 媒體流轉碼的作業ID列表,多個用逗號分隔;JobId可通過獲取播放地址接口(GetPlayInfo)獲取到。 $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 獲取視頻列表 * @param [type] $client [description] * @return [type] [description] */ function get_video_list() { $request = new vod\GetVideoListRequest(); // 示例:分別取一個月前、當前時間的UTC時間作為篩選視頻列表的起止時間 $localTimeZone = date_default_timezone_get(); date_default_timezone_set('UTC'); $utcNow = gmdate('Y-m-d\TH:i:s\Z'); $utcMonthAgo = gmdate('Y-m-d\TH:i:s\Z', time() - 30*86400); date_default_timezone_set($localTimeZone); $request->setStartTime($utcMonthAgo); // 視頻創建的起始時間,為UTC格式 $request->setEndTime($utcNow); // 視頻創建的結束時間,為UTC格式 #$request->setStatus('Uploading,Normal,Transcoding'); // 視頻狀態,默認獲取所有狀態的視頻,多個用逗號分隔 #$request->setCateId(0); // 按分類進行篩選 $request->setPageNo(1); $request->setPageSize(20); $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 獲取源文件信息(含原片下載地址) * @param [type] $client [description] * @param [type] $videoId [description] * @return [type] [description] */ function get_mezzanine_info( $videoId) { $request = new vod\GetMezzanineInfoRequest(); $request->setVideoId($videoId); $request->setAuthTimeout(3600*5); // 原片下載地址過期時間,單位:秒,默認為3600秒 $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 刪除視頻 * @param [type] $client [description] * @param [type] $videoIds [description] * @return [type] [description] */ function delete_videos( $videoIds) { $request = new vod\DeleteVideoRequest(); $request->setVideoIds($videoIds); // 支持批量刪除視頻;videoIds為傳入的視頻ID列表,多個用逗號分隔 $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 修改視頻信息 * @param [type] $client [description] * @param [type] $videoId [description] * @return [type] [description] */ function update_video_info( $videoId) { $request = new vod\UpdateVideoInfoRequest(); $request->setVideoId($videoId); $request->setTitle('New Title'); // 更改視頻標題 $request->setDescription('New Description'); // 更改視頻描述 $request->setCoverURL('http://img.alicdn.com/tps/TB1qnJ1PVXXXXXCXXXXXXXXXXXX-700-700.png'); // 更改視頻封面 $request->setTags('tag1,tag2'); // 更改視頻標簽,多個用逗號分隔 $request->setCateId(0); // 更改視頻分類(可在點播控制台·全局設置·分類管理里查看分類ID:https://vod.console.aliyun.com/#/vod/settings/category) $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 獲取視頻信息 * @param [type] $client [description] * @param [type] $videoId [description] * @return [type] [description] */ function get_video_info( $videoId) { $request = new vod\GetVideoInfoRequest(); $request->setVideoId($videoId); $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 獲取指定的分類信息,及其子分類(即下一級分類)的列表 * @param [type] $client [description] * @param integer $cateId [description] * @param integer $pageNo [description] * @param integer $pageSize [description] * @return [type] [description] */ function get_categories( $cateId=-1, $pageNo=1, $pageSize=10) { $request = new vod\GetCategoriesRequest(); $request->setCateId($cateId); // 分類ID,默認為根節點分類ID即-1 $request->setPageNo($pageNo); $request->setPageSize($pageSize); $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 刪除分類 * 刪除視頻分類,同時會刪除其下級分類(包括二級分類和三級分類),請慎重操作 * @param [type] $client [description] * @param [type] $cateId [description] * @return [type] [description] */ function delete_category( $cateId) { $request = new vod\DeleteCategoryRequest(); $request->setCateId($cateId); $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 修改分類 * @param [type] $client [description] * @param [type] $cateId [description] * @param [type] $cateName [description] * @return [type] [description] */ function update_category( $cateId, $cateName) { $request = new vod\UpdateCategoryRequest(); $request->setCateId($cateId); $request->setCateName($cateName); // 分類名稱,不能超過64個字節,UTF8編碼 $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 創建分類 * 1.創建視頻分類,最大支持三級分類,每個分類最多支持創建100個子分類 * 2.一級分類最大也是支持100個,若有更大需求請提工單聯系我們 * @param [type] $client [description] * @param [type] $cateName [description] * @param integer $parentId [description] */ function add_category( $cateName, $parentId=-1) { $request = new vod\AddCategoryRequest(); $request->setCateName($cateName); // 分類名稱,不能超過64個字節,UTF8編碼 $request->setParentId($parentId); // 父分類ID,若不填,則默認生成一級分類,根節點分類ID為-1 $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } /** * @desc 獲取圖片上傳地址和憑證 * @param [type] $client [description] * @param [type] $imageType [description] * @param [type] $imageExt [description] * @return [type] [description] */ function create_upload_image( $imageType, $imageExt) { $request = new vod\CreateUploadImageRequest(); $request->setImageType($imageType); $request->setImageExt($imageExt); $request->setAcceptFormat('JSON'); return $this -> client ->getAcsResponse($request); } }
3.調用
假如步驟二的類文件名為video.php
那么代碼如下:
require_once './video.php'; $videoObj = new AliyunVideo(); //實例化阿里雲對象 $videoObj -> create_upload_video();