vimqu/php-sdk

云视频转码。从视频文件创建 HLS、Mpeg Dash、缩略图和 AI 生成字幕

v1.0.4 2024-01-31 11:34 UTC

This package is auto-updated.

Last update: 2024-09-30 12:57:56 UTC


README

VimQu PHP-SDK

使用此 SDK,您可以更改视频文件的容器(mp4、mkv、mov、webm)、编解码器(h264、h265、vp8、vp9、prores)和比特率。您可以创建 自适应比特率 视频。在此过程中,您可以对视频执行 调整大小裁剪剪辑 操作。您可以创建视频文件的 缩略图。在 94 种语言(AI 生成)中创建字幕文件(WebVTTSRT)。将输出文件上传到您选择的存储服务。

目前,VimQu 集成了以下存储服务

  • AWS S3
  • Google Cloud Storage
  • Azure Storage
  • FTP
  • 任何兼容 S3 的服务,如 Vultr Object Storage、DigitalOcean Object Storage、Wasabi、Backblaze ...

查看完整文档.

要求

  • PHP 8.1+
  • VimQu 账户。 创建账户
  • VimQu Token。
  • 存储服务(您必须在 VimQu 中保存它)。您可以在 此页面 上创建它,您可以在 此页面 上找到如何添加存储的说明

安装

composer require vimqu/php-sdk

快速入门

要创建任务,我们需要一个 TaskManager 实例。

use Vimqu\Vimqu\Task\TaskManager;
use Vimqu\Vimqu\Outputs\VideoOutput;

$task = TaskManager::withToken('your_access_token')
    ->setInputFromStorage('your_storage_id', '/birds.mp4');
	// or
    ->setInputFromUrl('https://<your_file>.mp4');

$video = (new VideoOutput('h264', 'mp4'))
    ->setStorage('your_storage_id', '/outputs/videos')
    ->setReferenceId('your_reference_id')
    ->subtitle(true)
    ->resize(300, null)
    ->clip(2, duration: 45)
    ->crop(300, 300, 15, 15);

$task->addOutput($video);
$result = $task->send();

您可以添加多个输出。如果没有错误,结果将是 Vimqu\Vimqu\Dto\TaskDto 实例。

$status = $result->getStatus(); // the status will be "active".
$id = $result->getId(); 

任务完成时,我们将向您发送一个 请求(webhook)。然而,您可以随时获取任务结果。

use Vimqu\Vimqu\Task\Search;

// This query will give you the "TaskDto" instance again.
$task = Search::withToken('xxxx xxxx')->getById($id);

任务

API 文档

创建 HLS

use Vimqu\Vimqu\Outputs\HlsOutput;

$hls = (new HlsOutput)
    ->setStorage('your_storage_id', '/outputs/hls')
    ->setReferenceId('your_reference_id')
    ->subtitle(true)
    ->clip(2, 45)
    ->crop(300, 300, 15, 15)
    ->overlayImage('https://your_overlay_image.png', 50, 50, 0, 20)
    ->addVariant('240p')
    ->addVariant('480p')
    ->addVariant('720p')
    ->addVariant('1080p');

// $task is instance of TaskManager, we created it before.
$task->addOutput($hls);
$task->send();
  • 可用变体:240p、360p、480p、720p、1080p、1440p、2160p
  • 可用过滤器:clip、crop、subtitle、overlayImage

创建 Mpeg DASH

use Vimqu\Vimqu\Outputs\DashOutput;

$dash = (new DashOutput)
    ->setStorage('your_storage_id', '/outputs/dash')
    ->setReferenceId('your_reference_id')
    ->subtitle(true)
    ->clip(2, 45)
    ->crop(300, 300, 15, 15)
    ->addVariant('720p')
    ->addVariant('1080p');

$task->addOutput($dash);
$task->send();
  • 可用变体:240p、360p、480p、720p、1080p、1440p、2160p
  • 可用过滤器:clip、crop、subtitle、overlayImage

创建视频输出

use Vimqu\Vimqu\Outputs\VideoOutput;

$video = (new VideoOutput('h264', 'mp4'))
    ->setStorage('your_storage_id', '/outputs/videos')
    ->setReferenceId('your_reference_id')
    ->subtitle(true)
    ->resize(300, null)
    ->clip(2, duration: 45)
    ->crop(300, 300, 15, 15);

$task->addOutput($video);
$task->send();
  • 可用容器:mp4、webm、mov、mkv
  • 可用视频编解码器:h264、h265、vp8、vp9、prores
  • 可用过滤器:resize、clip、crop、subtitle、overlayImage

使用精确秒数创建缩略图

use Vimqu\Vimqu\Outputs\ThumbnailBySeconds;

$thumbnailBySeconds = (new ThumbnailBySeconds([4, 22, 400, 650]))
    ->setStorage('your_storage_id', '/outputs/thumbnails/seconds')
    ->setReferenceId('your_reference_id')
    ->resize(300, null);

$task->addOutput($thumbnailBySeconds);
$task->send();
  • 可用容器:jpg、png、webp
  • 可用过滤器:resize

使用数字创建缩略图

use Vimqu\Vimqu\Outputs\ThumbnailByNumber;

$thumbnailByNumber = (new ThumbnailByNumber(5, 'jpg'))
    ->setStorage('your_storage_id', '/outputs/thumbnails/number')
    ->setReferenceId('your_reference_id')
    ->resize(300, 500, true);

$task->addOutput($thumbnailByNumber);
$task->send();
  • 可用容器:jpg、png、webp
  • 可用过滤器:resize

使用间隔创建缩略图

use Vimqu\Vimqu\Outputs\ThumbnailByInterval;

$thumbnailByInterval = (new ThumbnailByInterval(10, 'png'))
    ->setStorage('your_storage_id', '/outputs/thumbnails/interval')
    ->setReferenceId('your_reference_id')
    ->resize(null, 150);

$task->addOutput($thumbnailByInterval);
$task->send();
  • 可用容器:jpg、png、webp
  • 可用过滤器:resize

存储

您可以获取所有存储。 详情

use Vimqu\Vimqu\Storage;

$storages = Storage::withToken($token)->all();
// [
//    [
//         'name' => 'my_storage',
//         'id' => 'xxxx xxxx xxxx',
//         'driver' => 's3' // it can be ftp, gcs, azure
//    ]
// ]

搜索任务

此方法将获取您的所有任务。结果是 TaskDto 数组。

use Vimqu\Vimqu\Task\Search;

$tasks = Search::withToken($token)->search();

您可以应用以下过滤器

$tasks = Search::withToken($token)->search(
	['hls', 'thumbnail', 'dash'],
	'your_reference_id',
	'completed'
);

搜索结果(TaskDto)

foreach($tasks as $task) {

    $taskStatus = $task->getStatus();
    $id = $task->getId();

    foreach($task->getOutputs() as $output) {

        $reference = $output->getReferenceId();

        foreach($output->getFiles() as $file){
            $filePath = $file->getPath();
        }
    }
}

过滤器参考

resize

您可以使用它来调整视频大小。

clip

您可以从视频中的任何时间点创建剪辑。

overlayImage

您可以使用它来在视频上烧录图片。

crop

您可以在特定点切割视频。

subtitle

您可以使用它来创建脚本。您的 vtt 和 srt 文件将在目标路径根目录中。您在 setStorage 方法中提供了此目录。