vimqu / php-sdk
云视频转码。从视频文件创建 HLS、Mpeg Dash、缩略图和 AI 生成字幕
v1.0.4
2024-01-31 11:34 UTC
Requires
- php: >=8.1
- ext-curl: *
- guzzlehttp/guzzle: >=6.5
README
VimQu PHP-SDK
使用此 SDK,您可以更改视频文件的容器(mp4、mkv、mov、webm)、编解码器(h264、h265、vp8、vp9、prores)和比特率。您可以创建 自适应比特率 视频。在此过程中,您可以对视频执行 调整大小、裁剪、剪辑 操作。您可以创建视频文件的 缩略图。在 94 种语言(AI 生成)中创建字幕文件(WebVTT、SRT)。将输出文件上传到您选择的存储服务。
目前,VimQu 集成了以下存储服务
- AWS S3
- Google Cloud Storage
- Azure Storage
- FTP
- 任何兼容 S3 的服务,如 Vultr Object Storage、DigitalOcean Object Storage、Wasabi、Backblaze ...
要求
安装
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);
任务
创建 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 方法中提供了此目录。