阿里云视频点播,基于thinkphp8上传视频

前端参考官方示例(jQuery版)




  
  阿里云 JavaScript上传SDK Demo (使用jquery)
  
  
  
  
  


  
上传方式一, 使用 UploadAuth 上传: 上传进度: 0 %
uploadAuth及uploadAddress参数请查看获取上传地址和凭证

前提条件:阿里云镜像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

安装sdk:

composer require alibabacloud/vod-20170321

后端代码:(tp8)

use AlibabaCloud\SDK\Vod\V20170321\Vod;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Vod\V20170321\Models\CreateUploadVideoRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Vod\V20170321\Models\RefreshUploadVideoRequest;

class Demo
{
    /**
     * 使用AK&SK初始化账号Client
     * @return Vod Client
     */
    public static function createClient(){
        $config = new Config([
            "accessKeyId" => '', // 从官方获取
            "accessKeySecret" => ''
        ]);
        
        $config->endpoint = "vod.cn-shanghai.aliyuncs.com";
        return new Vod($config);
    }

    /**
     * 获取上传视频地址和凭证;
     * @return Json
     */
    public function createVideo(){
        $client = self::createClient();
        $createUploadVideoRequest = new CreateUploadVideoRequest([
            "fileName" => "D:\video_01.mp4",
            "title" => "UploadTest"
        ]);
        $runtime = new RuntimeOptions([]);
        try {
            // 复制代码运行请自行打印 API 的返回值
            $result = $client->createUploadVideoWithOptions($createUploadVideoRequest, $runtime);
            $uploadAuth = $result->body->uploadAuth;
            $videoId = $result->body->videoId;
            $uploadAddress = $result->body->uploadAddress;
            
            // 构建返回的数组
            
            $data = [
                'uploadAuth' => $uploadAuth,
                'videoId' => $videoId,
                'uploadAddress' => $uploadAddress,
            ];
            
            return json($data);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            
            $res = Utils::assertAsString($error->message);
            return json(['code'=>500,'msg'=>$res]);
        }
    }
    /**
     * 刷新视频上传凭证;
     */
    public function refreshVideo(){
        $client = self::createClient();
        $videoId = input('get.videoId');
        // dd($videoId);
        $refreshUploadVideoRequest = new RefreshUploadVideoRequest([
            "videoId" => $videoId
        ]);
        $runtime = new RuntimeOptions([]);
        try {
            // 复制代码运行请自行打印 API 的返回值
            $result = $client->refreshUploadVideoWithOptions($refreshUploadVideoRequest, $runtime);
            $uploadAuth = $result->body->uploadAuth;
            $videoId = $result->body->videoId;
            $uploadAddress = $result->body->uploadAddress;
            
            // 构建返回的数组
            
            $data = [
                'uploadAuth' => $uploadAuth,
                'videoId' => $videoId,
                'uploadAddress' => $uploadAddress,
            ];
            
            return json($data);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            
            $res = Utils::assertAsString($error->message);
            
            return json(['code'=>500,'msg'=>$res]);
        }
    }

    /**
     * 获取视频播放地址;
     */
    public function getPlayUrl()
    {
        $client = self::createClient();
        $getPlayInfoRequest = new GetPlayInfoRequest([
            "videoId" => "c0bb1237eb8f71ef92585017f0e80102"
        ]);
        $runtime = new RuntimeOptions([]);
        try {
            // 复制代码运行请自行打印 API 的返回值
            $result = $client->getPlayInfoWithOptions($getPlayInfoRequest, $runtime);
            // dd($result);
            $playUrl = $result->body->playInfoList->playInfo[0]->playURL;
            return json(['code'=>200,'msg'=>'success','data'=>$playUrl]);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            $res = Utils::assertAsString($error->message);
            
            return json(['code'=>500,'msg'=>$res]);
        }
    }
}

前端播放视频:(参考官方文档)







Aliplayer Online Settings




测试环境:debian 12; php 8.3; thinkphp8.1 欢迎大佬们纠正

你可能感兴趣的:(php,阿里云,音视频,云计算)