阿里雲視頻點播sdk封裝 php


阿里雲的點播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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM