projektgopher/laravel-ffmpeg-tools

Generates strings for use in ffmpeg commands to tween between values with easings.
55,569 55
Install
composer require projektgopher/laravel-ffmpeg-tools
Latest Version:v0.8.1
PHP:^8.1
Laravel:10 · 11 · 12
License:MIT
Last Updated:Aug 6, 2026
Links: GitHub  ·  Packagist
Maintainer: ProjektGopher

Tools and utilities to help generate complex strings for FFMpeg in Laravel.

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

FFMpeg can be opaque in its commands. Take the following example:

if(lt(t\,5)\,((w*7/8)-text_w-200)\,if(gt(t\,5+2)\,((w*7/8)-text_w)\,((w*7/8)-text_w-200)+((((w*7/8)-text_w)-((w*7/8)-text_w-200))(if(eq(((t-5)/2)\,0)\,0\,if(eq(((t-5)/2)\,1)\,1\,pow(2\,-10((t-5)/2))*sin((((t-5)/2)*10-0.75)*2.0943951023932)+1))))))

This completely bonkers string will calculate just the x position of a text element. It'll wait 5 seconds, animate the element from 200px left of its final position over 2 seconds with an easing of EaseOutElastic. How would you approach changing this to an easing of EaseOutBounce? Not gonna happen.

This package allows you to build these string in a fluent way that's easily maintainable in a way that feels familiar to php and Laravel devs. The following example will output the exact same string as above, but imagine how much easier it'll be to change:

$finalXpos = '(w*7/8)-text_w';
$x = (new Tween())
    ->from("{$finalXpos}-200")
    ->to($finalXpos)
    ->delay(Timing::seconds(5))
    ->duration(Timing::seconds(2))
    ->ease(Ease::OutElastic);

The API is modelled after The GreenSock Animation Platform (GSAP) and all the math for the easings is ported from Easings.net. The stringification of these math strings is ported from This Gitlab repo

Installation

You can install the package via composer:

composer require projektgopher/laravel-ffmpeg-tools

Usage

Using outside of a Laravel application

For now this package can only be used within a Laravel app, but there are plans to extract the core functionality into a separate package that can be used without being bound to the framework.

Testing

Changelog

Please see RELEASES for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

A big "Thank You" to EXACTsports for supporting the development of this package.

License

The MIT License (MIT). Please see License File for more information.

Related Packages

projektgopher/whisky

A simple CLI tool for managing a project's git hooks across multiple members.

463,355 244
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

644,549,754 9,698
laravel/framework

The Laravel Framework.

593,882,149 34,959
laravel/tinker

Powerful REPL for the Laravel framework.

507,193,856 7,441
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

423,477,751 607

Version History

Version Released PHP Laravel License
v0.8.1 ^8.1 ^10.0|^11.0|^12.0 MIT
v0.8.0 ^8.1 ^10.0|^11.0 MIT
v0.7.0 ^8.1 ^10.0 MIT
v0.6.1 ^8.1 ^10.0 MIT
v0.6.0 ^8.1 ^10.0 MIT
Pre-releases (1)
Version Released PHP Laravel License
v0.3.0-alpha.0 ^8.1 ^10.0 MIT