PHPackages                             vimqu/php-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. vimqu/php-sdk

ActiveLibrary[Image &amp; Media](/categories/media)

vimqu/php-sdk
=============

Cloud Video Transcoding. Create HLS, Mpeg Dash, Thumbnails and AI Generated Subtitle from video files

v1.0.4(2y ago)05MITPHPPHP &gt;=8.1

Since Jan 30Pushed 2y ago1 watchersCompare

[ Source](https://github.com/vimqu/php-sdk)[ Packagist](https://packagist.org/packages/vimqu/php-sdk)[ RSS](/packages/vimqu-php-sdk/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (6)Used By (0)

 [![](https://camo.githubusercontent.com/5e9268ed7bdbfbce07b7fdf53ee6ce431b32b67ca05a6cf5a77bb31f447c53e0/68747470733a2f2f76696d71752e636f6d2f7765622f696d616765732f76696d71755f6f72675f3430302e706e67)](https://camo.githubusercontent.com/5e9268ed7bdbfbce07b7fdf53ee6ce431b32b67ca05a6cf5a77bb31f447c53e0/68747470733a2f2f76696d71752e636f6d2f7765622f696d616765732f76696d71755f6f72675f3430302e706e67)

VimQu PHP-SDK
=============

[](#vimqu-php-sdk)

With this SDK you can change the container (mp4, mkv, mov, webm), codec (h264, h265, vp8, vp9, prores) and bitrate of video files. You can create **Adaptive Bitrate** videos. While doing this, you can **resize**, **crop**, **clip** operations on the video. You can create **thumbnails** from video file. Create subtitle files (**WebVTT**, **SRT**) in 94 languages (AI generated). Uploads the output files to the storage service of your choice.

Currently, VimQu is integrated with the following storage services:

- AWS S3
- Google Cloud Storage
- Azure Storage
- FTP
- Any S3 Compatible Service like Vultr Object Storage, DigitalOcean Object Storage, Wasabi, Backblaze ...

[See Full documentation](https://doc.vimqu.com/).

Requirements
============

[](#requirements)

- PHP 8.1+
- VimQu Account. [Create account](https://vimqu.com/register)
- VimQu Token.
- Storage Service (you have to save it in VimQu). You can create it in [this page](https://vimqu.com/board/my-storages) and you can find how to add storage [in this page](https://doc.vimqu.com/category/storage-configuration)

Installation
============

[](#installation)

```
composer require vimqu/php-sdk

```

Quick Start
===========

[](#quick-start)

To create a Task we need a TaskManager instance.

```
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://.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();
```

You can add more than one output. If there is no error, the result will be the `Vimqu\Vimqu\Dto\TaskDto` instance.

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

We will send you a **request (webhook)** when the task is complete. However, you can get the task result at any time.

```
use Vimqu\Vimqu\Task\Search;

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

Task
====

[](#task)

[API Document](https://doc.vimqu.com/category/task-service)

Create HLS
----------

[](#create-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();
```

- **Available variants**: 240p, 360p, 480p, 720p, 1080p, 1440p, 2160p
- **Available filters**: clip, crop, subtitle, overlayImage

Create Mpeg DASH
----------------

[](#create-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();
```

- **Available variants**: 240p, 360p 480p, 720p, 1080p, 1440p, 2160p
- **Available filters**: clip, crop, subtitle, overlayImage

Create Video Output
-------------------

[](#create-video-output)

```
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();
```

- **Available containers**: mp4, webm, mov, mkv
- **Available video codecs**: h264, h265, vp8, vp9, prores
- **Available filters**: resize, clip, crop, subtitle, overlayImage

Create Thumbnail with Exact Seconds
-----------------------------------

[](#create-thumbnail-with-exact-seconds)

```
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();
```

- **Available containers**: jpg, png, webp
- **Available filters**: resize

Create Thumbnail with Number
----------------------------

[](#create-thumbnail-with-number)

```
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();
```

- **Available containers**: jpg, png, webp
- **Available filters**: resize

Create Thumbnail with Interval
------------------------------

[](#create-thumbnail-with-interval)

```
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();
```

- **Available containers**: jpg, png, webp
- **Available filters**: resize

Storage
=======

[](#storage)

You can fetch all storages. [Details](https://doc.vimqu.com/category/storage-configuration)

```
use Vimqu\Vimqu\Storage;

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

Search Task
-----------

[](#search-task)

This method will get you all your tasks. The result is an array of TaskDto.

```
use Vimqu\Vimqu\Task\Search;

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

You can apply these filters:

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

### Result of the Search (the TaskDto)

[](#result-of-the-search-the-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();
        }
    }
}
```

- [Vimqu\\Vimqu\\Dto\\FileDto](https://github.com/vimqu/php-sdk/blob/main/src/Dto/FileDto.php)
- [Vimqu\\Vimqu\\Dto\\OutputDto](https://github.com/vimqu/php-sdk/blob/main/src/Dto/OutputDto.php)
- [Vimqu\\Vimqu\\Dto\\TaskDto](https://github.com/vimqu/php-sdk/blob/main/src/Dto/TaskDto.php)

Filters Reference
=================

[](#filters-reference)

resize
------

[](#resize)

You can use it to rescale the video.

ParameterNullableTypeDefault ValuewidthYESintnullheightYESintnullaspectRatioYESboolnullclip
----

[](#clip)

You can create clips from any time in the video.

ParameterNullableTypeDefault ValuefromYESintnulldurationYESintnulltoYESboolnulloverlayImage
------------

[](#overlayimage)

You can use it to burn pictures on video.

ParameterNullableTypeDefault ValueurlYESintnullcoordinateXYESintnullcoordinateYYESintnullfirstSecondYESintnulllastSecondYESintnullcrop
----

[](#crop)

You can cut the video at specific points.

ParameterNullableTypeDefault ValuewidthNOintnullheightNOintnullcoordinate\_xNOintnullcoordinate\_yNOintnullsubtitle
--------

[](#subtitle)

You can use it to create a transcript. Your vtt and srt files will be in targetPath root directory. You gave this directory in the setStorage method.

ParameterNullableTypeDefault ValuesubtitleNOboolfalse

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 92.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

5

Last Release

838d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/63a7d331d3232cc3e30cce28d5c48ddcc423cd6e4d71389e8d7674e7b310a38c?d=identicon)[VimQu](/maintainers/VimQu)

---

Top Contributors

[![vimqu](https://avatars.githubusercontent.com/u/157098741?v=4)](https://github.com/vimqu "vimqu (12 commits)")[![kkutlukk](https://avatars.githubusercontent.com/u/131544041?v=4)](https://github.com/kkutlukk "kkutlukk (1 commits)")

---

Tags

thumbnailsubtitlehlsdashtranscodingvideo transcodeadaptive bitrate

### Embed Badge

![Health badge](/badges/vimqu-php-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/vimqu-php-sdk/health.svg)](https://phpackages.com/packages/vimqu-php-sdk)
```

###  Alternatives

[intervention/image

PHP Image Processing

14.3k194.3M2.2k](/packages/intervention-image)[intervention/image-laravel

Laravel Integration of Intervention Image

1496.5M102](/packages/intervention-image-laravel)[folklore/image

Image manipulation library for Laravel 5 based on Imagine and inspired by Croppa for easy url based manipulation

270248.2k5](/packages/folklore-image)[soluble/mediatools

FFMpeg video/audio/subs conversions, thumbnails, audio extraction, query...

1451.7k](/packages/soluble-mediatools)[aminyazdanpanah/php-shaka

Shaka PHP is a library that uses Shaka Packager for DASH and HLS packaging and encryption, supporting Common Encryption for Widevine and other DRM Systems.

939.0k1](/packages/aminyazdanpanah-php-shaka)[urlbox/screenshots

Use urlbox to easily generate website thumbnail screenshots from a URL

14250.4k](/packages/urlbox-screenshots)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
