阿里视频点播开发流程

1、安装 SDK 核心库 OpenAPI。
文档地址:https://next.api.aliyun.com/api-tools/sdk/vod?version=2017-03-21&language=php-tea
2、 最新版本库中代码报错;我降了版本错误就消失了。

composer require alibabacloud/darabonba-openapi 0.2.5

3、安装 VOD

composer require alibabacloud/vod-20170321 2.16.9

4、具体代码如下

<?php

namespace App\Http\Repositories\ShangQuan\Admin;

use Illuminate\Http\Request;
use App\Model\ShangQuan\Circle;

use AlibabaCloud\SDK\Vod\V20170321\Vod;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Vod\V20170321\Models\CreateUploadVideoRequest;
use AlibabaCloud\SDK\Vod\V20170321\Models\GetVideoInfoRequest;
use AlibabaCloud\SDK\Vod\V20170321\Models\GetPlayInfoRequest;
use AlibabaCloud\SDK\Vod\V20170321\Models\GetVideoPlayAuthRequest;
use AlibabaCloud\SDK\Vod\V20170321\Models\RefreshUploadVideoRequest;
use AlibabaCloud\SDK\Vod\V20170321\Models\DeleteVideoRequest;

class VideoRepository
{
    protected $request;
    protected $circle;

    /**
     * @param Request $request
     * @param Circle $circle
     */
    public function __construct(Request $request, Circle $circle)
    {
        $this->request = $request;
        $this->circle = $circle;
    }

    /**
     * 使用AK&SK初始化账号Client
     * @return Vod
     */
    public static function createClient()
    {
        $config = new Config([
            "accessKeyId" => env('ACCESS_KEY_ID', 'LTAI5t9dxYaMkD*******'),
            "accessKeySecret" => env('ACCESS_KEY_SECRET', 'Em5k7ziWljwUByFHsvS0G*******'),
        ]);
        //访问的域名
        $config->endpoint = "vod.cn-shanghai.aliyuncs.com";
        return new Vod($config);
    }

    /**
     * 获取视频上传地址和凭证
     * @return array
     */
    public function create()
    {
        $data = $this->request->all();
        if (empty($data['file'])) {
            return ["message" => "视频名称不能为空!", "code" => 201];
        }
        if (empty($data['title'])) {
            return ["message" => "视频标题不能为空!", "code" => 201];
        }
        $client = self::createClient();
        $createUploadVideoRequest = new CreateUploadVideoRequest([
            "fileName" => $data['file'],//文件名称
            "cateId" => $data['cateId'] ?? env('CATE_ID'),//类型名称
            'title' => $data['title'],//标题
            'coverURL' => $data['coverURL'] ?? '',//自定义视频封面的URL地址
            'templateGroupId' => env('TEMPLATE_GROUP_ID') //转码模板
        ]);

        $result = $client->createUploadVideo($createUploadVideoRequest);

        if (!empty($result->body)) {
            return ["message" => "获取成功!", "data" => $result->body];
        }

        return ["message" => "获取失败!", "code" => 201];
    }

    /**
     * 获取视频基本信息
     * @return array|array[]
     */
    public function info()
    {
        $videoId = request('videoId');
        if (empty($videoId)) {
            return ["message" => "参数错误videoId!", "code" => 201];
        }

        $client = self::createClient();
        $getPlayInfoRequest = new GetVideoInfoRequest([
            "videoId" => $videoId
        ]);

        $result = $client->getVideoInfo($getPlayInfoRequest);

        if (!empty($result->body)) {
            return ["message" => "获取成功!", "data" => $result->body];
        }

        return ["message" => "获取失败!", "code" => 201];
    }

    /**
     * 获取视频播放地址
     * @return array|array[]
     */
    public function play()
    {
        $videoId = request('videoId');
        $authTimeout = request('authTimeout', '300');
        if (empty($videoId)) {
            return ["message" => "参数错误videoId!", "code" => 201];
        }

        $client = self::createClient();
        $getPlayInfoRequest = new GetPlayInfoRequest([
            "videoId" => $videoId,
            "authTimeout" => $authTimeout, //视频链接过期时间
            "definition" => 'fd'
        ]);

        $result = $client->getPlayInfo($getPlayInfoRequest);

        if (!empty($result->body)) {
            return ["message" => "获取成功!", "data" => $result->body];
        }

        return ["message" => "获取失败!", "code" => 201];
    }

    /**
     * 获取视频播放凭证
     * @return array|array[]
     */
    public function auth()
    {
        $videoId = request('videoId');
        if (empty($videoId)) {
            return ["message" => "参数错误videoId!", "code" => 201];
        }

        $client = self::createClient();
        $getPlayInfoRequest = new GetVideoPlayAuthRequest([
            "videoId" => $videoId,
        ]);

        $result = $client->getVideoPlayAuth($getPlayInfoRequest);

        if (!empty($result->body)) {
            return ["message" => "获取成功!", "data" => $result->body];
        }

        return ["message" => "获取失败!", "code" => 201];
    }

    /**
     * 刷新视频上传凭证
     * @return array|array[]
     */
    public function refresh()
    {
        $videoId = request('videoId');
        if (empty($videoId)) {
            return ["message" => "参数错误videoId!", "code" => 201];
        }

        $client = self::createClient();
        $getPlayInfoRequest = new RefreshUploadVideoRequest([
            "videoId" => $videoId,
        ]);

        $result = $client->refreshUploadVideo($getPlayInfoRequest);

        if (!empty($result->body)) {
            return ["message" => "获取成功!", "data" => $result->body];
        }

        return ["message" => "获取失败!", "code" => 201];
    }

    /**
     * 删除完整视频
     * @return array|array[]
     */
    public function delete()
    {
        $videoIds = request('videoIds');
        if (empty($videoIds)) {
            return ["message" => "参数错误videoIds!", "code" => 201];
        }

        $client = self::createClient();
        $getPlayInfoRequest = new DeleteVideoRequest([
            "videoIds" => $videoIds,
        ]);

        $result = $client->deleteVideo($getPlayInfoRequest);

        if (!empty($result->body)) {
            return ["message" => "删除成功!", "data" => $result->body];
        }

        return ["message" => "删除失败!", "code" => 201];
    }
}

5、API接口文档地址: https://console-docs.apipost.cn/preview/2c1bd42304482640/cf56471aa6aa81f3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值