阿里云视频点播转码 Composer 版 
                                                    
                        
                    
                    
  
                    
                    阿里云视频点播
阿里云视频点播集是音视频采集、编辑、上传、自动化转码处理、媒体资源管理、高效云剪辑处理、分发加速、视频播放于一体的一站式音视频点播解决方案。
安装SDK
composer require alibabacloud/sdk版本要求
- 您必须使用 - PHP 5.5.0或更高版本- 可通过 - php -v命令查看当前的PHP版本;若未安装,请到PHP官网下载合适的版本。
- 使用 Composer 并优化自动加载 - composer dump-autoload --optimize
详情使用可参考

DEMO
<?php
/**
 * Notes: 视频点播
 * User : zzy
 * Date : 2020/1/15
 * Time : 10:23
 */
namespace App\Library;
use OSS\OssClient;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Vod\Vod;
class AliyunOnDemand
{
    private $accessKeyId = '';
    private $accessKeySecret = '';
    private $callback = '';
    private $client;
    public function __construct()
    {
        $this->accessKeyId = config('aliyun.oss.accessKeyId');
        $this->accessKeySecret = config('aliyun.oss.accessKeySecret');
        $this->callback = config('aliyun.onDemand.callback');
        $this->initVodClient();
    }
    /**
     * Notes: 初始化
     * User: zzy
     * Date: 2020/1/15
     * Time: 10:28
     * Version:
     */
    private function initVodClient()
    {
        $regionId = 'cn-shanghai';  // 点播服务接入区域
        $this->client = AlibabaCloud::accessKeyClient($this->accessKeyId, $this->accessKeySecret)
            ->regionId($regionId)
            ->connectTimeout(1)
            ->timeout(3)
            ->asDefaultClient();
    }
    /**
     * Notes: 初始化点播
     * User: zzy
     * Date: 2020/1/15
     * Time: 10:34
     * Version:
     * @param $uploadAuth
     * @param $uploadAddress
     */
    public function initOssClient($uploadAuth, $uploadAddress)
    {
        $ossClient = new OssClient($uploadAuth['AccessKeyId'], $uploadAuth['AccessKeySecret'], $uploadAddress['Endpoint'],
            false, $uploadAuth['SecurityToken']);
        $ossClient->setTimeout(86400 * 7);    // 设置请求超时时间,单位秒,默认是5184000秒, 建议不要设置太小,如果上传文件很大,消耗的时间会比较长
        $ossClient->setConnectTimeout(10);  // 设置连接超时时间,单位秒,默认是10秒
        return $ossClient;
    }
    /**
     * Notes: 获取播放地址
     * User: zzy
     * Date: 2020/1/15
     * Time: 10:45
     * Version:
     * @param $videoId
     * @return \AlibabaCloud\Client\Result\Result
     * @throws ClientException
     * @throws ServerException
     */
    public  function getPlayInfo($videoId)
    {
        try
        {
            $request = Vod::v20170321()->getPlayInfo()
                ->withVideoId($videoId)
                ->format('JSON')
                ->request();
            return array("status" => 1, "data" => $request);
        }
        catch (Exception $e)
        {
            return array("status" => 0, "data" => $e->getMessage());
        }
    }
    /**
     * Notes: 上传本地视频-点播转码
     * User: zzy
     * Date: 2020/1/15
     * Time: 10:51
     * Version:
     * @param $data
     */
    public  function localUploadLocalVideo($data, $isCallback = 1, $localFile)
    {
        $request = Vod::v20170321()->createUploadVideo();
        $request->withTitle($data['title']);//标题,UTF8,128大小
        $request->withFileName($data['fileName']);//视频源文件名
        $request->withDescription(isset($data['description']) ? $data['description'] : '');//描述,utf-8
        $request->withCoverURL(isset($data['coverURL']) ? $data['coverURL'] : '');//封面url
        $request->withCateId(isset($data['cateId']) ? $data['cateId'] : ''); //分类id
        $request->withTags(isset($data['tags']) ? $data['tags'] : '');      //标签,隔开
        $request->withTemplateGroupId(isset($data['templateGroupId']) ? $data['templateGroupId'] : ''); //转码模板组ID
        $request->withStorageLocation(isset($data['storageLocation']) ? $data['storageLocation'] : ''); //存储地址
        if($isCallback == 1)
        {
            $userData = array(
                "MessageCallback" => array("CallbackURL" => $this->callback),
                "Extend" => array("title" => $data['title']),
                'EventType' => 'TranscodeComplete',
            );
            $request->withUserData(json_encode($userData));
        }
        $result = $request->request();
        $videoId = $result->VideoId;
        $uploadAddress = json_decode(base64_decode($result->UploadAddress), true);
        $uploadAuth = json_decode(base64_decode($result->UploadAuth), true);
        $ossClient = $this->initOssClient($uploadAuth, $uploadAddress);
        $this->multipartUploadFile($ossClient, $uploadAddress, $localFile);
        return array("status" => 1, "data" => $videoId);
    }
    /**
     * Notes: 分片上传
     * User: zzy
     * Date: 2020/1/15
     * Time: 10:36
     * Version:
     * @param $ossClient
     * @param $uploadAddress
     * @param $localFile
     * @return mixed
     */
    public static function multipartUploadFile($ossClient, $uploadAddress, $localFile)
    {
        return $ossClient->multiuploadFile($uploadAddress['Bucket'], $uploadAddress['FileName'], $localFile);
    }
    /**
     * Notes: 刷新播放凭证
     * User: zzy
     * Date: 2020/1/15
     * Time: 14:45
     * Version:
     * @param $videoId
     */
    public function refreshUploadVideo($videoId)
    {
        $result = Vod::v20170321()
            ->refreshUploadVideo()
            ->withVideoId($videoId)
            ->request();
        return $result['VideoId'];
    }
    /**
     * URL批量拉取上传
     *
     *
     * @param $url
     * @param $title
     * @param $templateGroupId
     * @return array
     * @throws ClientException
     * @throws ServerException
     */
    public static function uploadMediaByURL($url, $title, $templateGroupId)
    {
        $uploadMetadataList          = [];
        $uploadMetadata              = [];
        $uploadMetadata['SourceUrl'] = $url;
        $uploadMetadata['Title']     = $title;
        $uploadMetadata['TemplateGroupId'] = $templateGroupId;
        $uploadMetadataList[]        = $uploadMetadata;
        $result = Vod::v20170321()
            ->uploadMediaByURL()
            ->withUploadURLs($url)
            ->withUploadMetadatas(json_encode($uploadMetadataList))
            ->connectTimeout(0)
            ->timeout(0)
            ->request()->toArray();
        return $result;
    }
    /**
     * 获取URL上传信息
     *
     * @return array
     * @throws ServerException
     * @throws ClientException
     */
    public  function getURLUploadInfos()
    {
        $result = Vod::v20170321()
            ->getURLUploadInfos()
            ->withUploadURLs('url1,url2')
            ->connectTimeout(60)
            ->timeout(65)
            ->request()->toArray();
        return $result['URLUploadInfoList'];
        /*     或
        $result = Vod::v20170321()
            ->getURLUploadInfos()
            ->withJobIds('jobId1,jobId2')
            ->connectTimeout(60)
            ->timeout(65)
            ->request()->toArray();*/
    }
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
 
           最闲的码农 的个人博客
 最闲的码农 的个人博客
         
             
             
             
             
                     
                     
             
             
         
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: