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
You can install the package via composer:
composer require projektgopher/laravel-ffmpeg-tools
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.
Please see RELEASES for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
A big "Thank You" to EXACTsports for supporting the development of this package.
The MIT License (MIT). Please see License File for more information.