使用阿里云OSS搭建随机视频接口

说明

首先呢,来到阿里云官网登录账号,开通OSS,先讲一下OSS是收费的,它们的收费规则是,存储空间低于1G不收费,其实空间没多贵就几块钱贵的是流量,流量也是低于1G不收费,夜间:0.25元/1G,日间:0.5元/1G,我来告诉一下大家这个流量是怎么回事,如果你是用阿里云CDN/DCDN需要购买下行流量,如果是阿里云OSS需要购买回源流量包,这两个也是很贵的,好了废话说完了。

图片[1]-使用阿里云OSS搭建随机视频接口-安澜博客

教程

宝塔面板或者其他面板,新建一个文件夹,在文件夹里新建一个composer.json文件,这里是下载阿里云OSS的sdk,把下面的文字填入文件,后面的2.0可以根据你的php定义,7.4以上用2.4 以下用2.0,但是安装完他是2.7版本,打开宝塔终端cd到文件所在的目录,输入安装命令 composer install回车执行然后输入Yes。

{
    "require": {
        "aliyuncs/oss-sdk-php": "~2.0"
    }
}
图片[2]-使用阿里云OSS搭建随机视频接口-安澜博客

代码

下面是实例代码,将随机转变存储桶里的一个视频文件输出为视频链接形式为Json的数据,就是下面这种。

{  "url": "视频链接"}
<?php
require_once __DIR__.'/vendor/autoload.php';

use OSS\OssClient;
use OSS\Core\OssException;

// 配置信息
$accessKeyId = 'accessKeyId';
$accessKeySecret = 'accessKeySecret';
$endpoint = 'http://oss-cn-hangzhou.aliyuncs.com';  // 根据你的实际 OSS 服务区域修改
$bucket = '存储桶名字';

try {
    // 初始化 OssClient
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

    // 获取存储桶中的所有视频文件列表
    $options = [
        'delimiter' => '/',
        'prefix' => '/'  // 假设所有视频文件都存储在videos文件夹下
    ];
    $result = $ossClient->listObjects($bucket, $options);
    $objectKeys = [];
    foreach ($result->getObjectList() as $objectInfo) {
        $objectKeys[] = $objectInfo->getKey();
    }

    // 随机选择一个视频文件
    if (empty($objectKeys)) {
        throw new OssException('No video files found in the bucket.');
    }
    $randomKey = $objectKeys[array_rand($objectKeys)];

    // 生成签名 URL,设置较长的过期时间,例如30天
    $expireTime = 30 * 24 * 60 * 60;  
    $signedUrl = $ossClient->signUrl($bucket, $randomKey, $expireTime);

    // 去除返回链接中的无用参数
    $parsedUrl = parse_url($signedUrl);
    unset($parsedUrl['query']);  // 去除查询参数
    $cleanUrl = $parsedUrl['scheme'] . '://' . $parsedUrl['host'] . $parsedUrl['path'];

    // 返回JSON格式的数据
    $response = [
        'url' => $cleanUrl
    ];
    header('Content-Type: application/json');
    echo json_encode($response);
} catch (OssException $e) {
    http_response_code(500);
    echo json_encode(['error' => $e->getMessage()]);
}
?>

里面的$endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'; 这个可以根据你的存储桶位置来改,比如shanghai上海,hangzhou杭州,这就是各个地域的拼音以此类推。

$expireTime = 是视频链接过期时间,当前时间戳与签名URL的过期时间之和不能超过9223372036854775807,否则会溢出报错。

accessKeyId 在AccessKey获取

accessKeySecret 在AccessKey获取,可以根据下面图片提示进行操作。

图片[3]-使用阿里云OSS搭建随机视频接口-安澜博客
图片[4]-使用阿里云OSS搭建随机视频接口-安澜博客
© 转载声明
本文作者:安澜
温馨提示: 本文最后更新于2025-01-19 20:32:39,某些文章具有时效性,若有错误或已失效,请在下方留言或联系安澜博客
本站代码模板仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容