初始化项目:添加后端代码、ThinkPHP框架、前端资源

This commit is contained in:
amb
2026-09-03 12:42:39 +08:00
commit 482bece22e
3726 changed files with 416708 additions and 0 deletions
@@ -0,0 +1,118 @@
<?php
namespace ShaoZeMing\AliVod\Services;
use ShaoZeMing\Aliyun\Core\DefaultAcsClient;
use ShaoZeMing\Aliyun\Core\Profile\DefaultProfile;
class BaseService
{
public $client;
/**
* @var
*/
public $config;
/**
* @var
*/
public $accessKeyID;
/**
* @var
*/
public $accessKeySecret;
/**
* @var
*/
public $regionId;
/**
* @var
*/
public $timeout;
/**
* @var
*/
public $type;
/**
* @var
*/
public $acceptFormat;
/**
* BaseService constructor.
* @param null $config
* @param string $securityToken 如果是设置了sts模式,传入这个参数
*/
public function __construct($config=null,$securityToken='')
{
$this->setConfig($config);
if ($this->type == 'sts') {
$this->client = $this->initVodSTSClient($securityToken);
} else {
$this->client = $this->initVodClient();
}
}
/**
* User: ZeMing Shao
* Email: szm19920426@gmail.com
* @return DefaultAcsClient
*/
public function initVodClient()
{
$profile = DefaultProfile::getProfile($this->regionId, $this->accessKeyID, $this->accessKeySecret);
return new DefaultAcsClient($profile);
}
/**
* User: ZeMing Shao
* Email: szm19920426@gmail.com
* @param $securityToken
* @return DefaultAcsClient
*/
public function initVodSTSClient($securityToken)
{
$profile = DefaultProfile::getProfile($this->regionId, $this->accessKeyID, $this->accessKeySecret, $securityToken);
return new DefaultAcsClient($profile);
}
/**
* User: ZeMing Shao
* Email: szm19920426@gmail.com
* @param $config
*/
public function setConfig($config)
{
if($config){
$this->config = $config;
}else{
$this->config = \app\common\model\config\System::getConfig('alivod');
}
$this->accessKeyID = $this->config['access_key_id'];
$this->accessKeySecret = $this->config['access_key_secret'];
$this->regionId = $this->config['region_id'];
$this->timeout = '3600'; // 如果是获取签名有效时间为多少
$this->type = 'access';//类型:access|sts 如果是sts 实例化对象时候需要传入$securityToken
$this->acceptFormat = 'JSON';//返回数据格式
}
}
@@ -0,0 +1,36 @@
<?php
namespace ShaoZeMing\AliVod\Services;
use ShaoZeMing\AliVod\SDK\DeleteVideoRequest;
use ShaoZeMing\AliVod\SDK\GetMezzanineInfoRequest;
class FileService extends BaseService
{
/**
* 刷新视频上传凭证
* User: ZeMing Shao
* Email: szm19920426@gmail.com
* @param $videoId
* @return mixed|\ShaoZeMing\Aliyun\Core\SimpleXMLElement
* @throws \ShaoZeMing\Aliyun\Core\Exception\ClientException
* @throws \ShaoZeMing\Aliyun\Core\Exception\ServerException
*/
public function deleteVideo($videoId)
{
$request = new DeleteVideoRequest();
$request->setVideoIds($videoId);
$refreshInfo = $this->client->getAcsResponse($request);
return $refreshInfo;
}
public function getMezzanineInfo($videoId)
{
$request = new GetMezzanineInfoRequest();
$request->setVideoId($videoId);
$refreshInfo = $this->client->getAcsResponse($request);
return $refreshInfo;
}
}
@@ -0,0 +1,51 @@
<?php
namespace ShaoZeMing\AliVod\Services;
use ShaoZeMing\AliVod\SDK\GetPlayInfoRequest;
use ShaoZeMing\AliVod\SDK\DecryptKMSDataKeyRequest;
use ShaoZeMing\AliVod\SDK\GetVideoPlayAuthRequest;
class PlayService extends BaseService
{
/**
* 通过音视频ID直接获取媒体文件(支持视频和音频)的播放地址。
* @param $videoId
*/
public function getPlayInfo($videoId,$outTime = 0)
{
$request = new GetPlayInfoRequest();
$request->setVideoId($videoId);
$request->setResultType('Multiple');
if($outTime){
//设置播放地址的有效时间。单位:秒。
$request->setAuthTimeout($outTime);
}
$refreshInfo = $this->client->getAcsResponse($request);
return $refreshInfo;
}
/**
* 获取音视频播放时所需的播放凭证。
* @param $videoId
* @return mixed
*/
public function getVideoPlayAuth($videoId)
{
$request = new GetVideoPlayAuthRequest();
$request->setVideoId($videoId);
$refreshInfo = $this->client->getAcsResponse($request);
return $refreshInfo;
}
public function decryptKMSDataKey($CipherText){
$request = new DecryptKMSDataKeyRequest();
$request->setCipherText($CipherText);
$refreshInfo = $this->client->getAcsResponse($request);
return $refreshInfo;
}
}
@@ -0,0 +1,48 @@
<?php
namespace ShaoZeMing\AliVod\Services;
use ShaoZeMing\AliVod\SDK\SubmitTranscodeJobsRequest;
use ShaoZeMing\AliVod\SDK\GenerateKMSDataKeyRequest;
class TranscodeService extends BaseService
{
/**
* 调用SubmitTranscodeJobs提交媒体转码作业,开始异步转码处理。
* @param $videoId 视频ID
* @param $TemplateGroupId 视频转码时使用的转码组ID
* @return mixed
*/
public function submitTranscodeJobs($videoId,$TemplateGroupId,$EncryptConfig='')
{
$request = new SubmitTranscodeJobsRequest();
$request->setVideoId($videoId);
$request->setTemplateGroupId($TemplateGroupId);
if($EncryptConfig){
$request->setEncryptConfig($EncryptConfig);
}
$refreshInfo = $this->client->getAcsResponse($request);
return $refreshInfo;
}
/**
* 生成一个随机的KMS数据密钥,用于视频点播标准加密。
* @return mixed
*/
public function generateKMSDataKey(){
$request = new GenerateKMSDataKeyRequest();
$refreshInfo = $this->client->getAcsResponse($request);
return $refreshInfo;
}
/**
* 查询转码任务列表
* @param $videoId
* @return mixed
*/
public function getListTranscodeTask($videoId){
$request = new ListTranscodeTaskRequest();
$request->setVideoId($videoId);
$refreshInfo = $this->client->getAcsResponse($request);
return $refreshInfo;
}
}
@@ -0,0 +1,103 @@
<?php
namespace ShaoZeMing\AliVod\Services;
use ShaoZeMing\AliVod\SDK\CreateUploadVideoRequest;
use ShaoZeMing\AliVod\SDK\RefreshUploadVideoRequest;
use ShaoZeMing\AliVod\SDK\UploadMediaByURLRequest;
class UploadService extends BaseService
{
/**获取视频上传凭证
* User: ZeMing Shao
* Email: szm19920426@gmail.com
* @param $title
* @param $filename
* @param $desc
* @param $coverUrl
* @param array $tags
* @return mixed|\ShaoZeMing\Aliyun\Core\SimpleXMLElement
* @throws \ShaoZeMing\Aliyun\Core\Exception\ClientException
* @throws \ShaoZeMing\Aliyun\Core\Exception\ServerException
*/
public function createUploadVideo($title, $filename,$templateGroupId="",$storageLocation="", $desc = "", $coverUrl = "", array $tags = [])
{
$request = new CreateUploadVideoRequest();
$request->setTitle($title);
$request->setFileName($filename);
if($desc){
$request->setDescription($desc);
}
if($coverUrl){
$request->setCoverURL($coverUrl);
}
if($templateGroupId){
$request->setTemplateGroupId($templateGroupId);
}
if($storageLocation){
$request->setStorageLocation($storageLocation);
}
$tags = implode(',', $tags);
$request->setTags($tags);
$request->setAcceptFormat($this->acceptFormat);
$uploadInfo = $this->client->getAcsResponse($request);
return $uploadInfo;
}
/**
* 刷新视频上传凭证
* User: ZeMing Shao
* Email: szm19920426@gmail.com
* @param $videoId
* @return mixed|\ShaoZeMing\Aliyun\Core\SimpleXMLElement
* @throws \ShaoZeMing\Aliyun\Core\Exception\ClientException
* @throws \ShaoZeMing\Aliyun\Core\Exception\ServerException
*/
public function refreshUploadVideo($videoId)
{
$request = new RefreshUploadVideoRequest();
$request->setVideoId($videoId);
$request->setAcceptFormat($this->acceptFormat);
$refreshInfo = $this->client->getAcsResponse($request);
return $refreshInfo;
}
/**
* URL批量拉取上传
* User: ZeMing Shao
* Email: szm19920426@gmail.com
* @param $url
* @param $title
* @return mixed|\ShaoZeMing\Aliyun\Core\SimpleXMLElement
* @throws \ShaoZeMing\Aliyun\Core\Exception\ClientException
* @throws \ShaoZeMing\Aliyun\Core\Exception\ServerException
*/
public function uploadMediaByURL($url, $title)
{
$request = new UploadMediaByURLRequest();
$request->setUploadURLs($url);
$uploadMetadataList = array();
$uploadMetadata = array();
$uploadMetadata["SourceUrl"] = $url;
$uploadMetadata["Title"] = $title;
$uploadMetadataList[] = $uploadMetadata;
$request->setUploadMetadatas(json_encode($uploadMetadataList));
return $this->client->getAcsResponse($request);
}
}