mo3golom/wonder-stories

Service for generating stories from source data

1.0.3 2021-08-30 15:58 UTC

This package is auto-updated.

Last update: 2024-03-29 04:45:59 UTC


README

Latest Version on Packagist

Сервис для генерации видео креативов для instagram stroies / reels или тик-ток видео.

Требования:

  • php:8.0
  • ffmpeg
  • gd
  • imagick

Установка

Вы можете установить пакет с помощью composer:

composer require mo3golom/wonder-stories

Использование

Базовое использование:

$background = (new \Mo3golom\WonderStories\DTO\Background())
    ->setWidth(576)
    ->setHeight(1024)
    ->setDuration(7)
    ->setPath('path_to_mp4_video')
;

$block =  (new \Mo3golom\WonderStories\DTO\Block())
        ->setType(
            (new \Mo3golom\WonderStories\DTO\Type())
                ->setId(\Mo3golom\WonderStories\Enum\BlockTypes::TYPE_TEXT)
                ->setSettings([
                    'text' => 'test',
                    'font_color' => '#ffffff',
                    'font_size' => 32,
                    'offset' => 16,
                    'background_enable' => true,
                    'background_color' => '#000000',
                ])
        )
        ->setDuration(5)
        ->setStartAt(0)
        ->setPosition(
            (new \Mo3golom\WonderStories\DTO\Position())
                ->setX(100)
                ->setY(100)
        )
    ;

$creative = (new \Mo3golom\WonderStories\DTO\Creative())
    ->setBlocks([$block])
    ->setBackground($background)
;

$wonderStories = \Mo3golom\WonderStories\Service\WonderStories::make();
echo $wonderStories->createFromCreative($creative);

Также при создании сервиса можно передать свою конфигурацию:

$wonderStories = \Mo3golom\WonderStories\Service\WonderStories::make([
     'filesystem' => [
        'local' => [
            'root' => './package'
        ],
     ],
     'block_types' => [
            \Mo3golom\WonderStories\Enum\BlockTypes::TYPE_TEXT => [
                'id' => \Mo3golom\WonderStories\Enum\BlockTypes::TYPE_TEXT,
                'name' => 'Текст',
                'processor' => \Mo3golom\WonderStories\Service\Block\TypeProcessors\Text::class,
            ],
            \Mo3golom\WonderStories\Enum\BlockTypes::TYPE_TIMER => [
                'id' => \Mo3golom\WonderStories\Enum\BlockTypes::TYPE_TIMER,
                'name' => 'Таймер',
                'processor' => \Mo3golom\WonderStories\Service\Block\TypeProcessors\Timer::class,
            ],
     ], 
]);
echo $wonderStories->createFromCreative($creative);

Типы Блоков:

Есть несколько доступных типов блоков (устанавливается в DTO Type, метод setId)

  • \Mo3golom\WonderStories\Enum\BlockTypes::TYPE_TEXT - обычный многострочный текст. Имеет следующие настройки:
[
    'text' => 'test', // отображаемый текст
    'font_color' => '#ffffff', // цвет текста в HEX формате
    'font_size' => 32, // размер текста
    'font_path' => 'path_to_font.ttf', // путь до файла шрифта .ttf
    'offset' => 16, // отступ от краев фона (будет заметно, если отрисовать фон)
    'background_enable' => true, // включить отрисовку фона
    'background_color' => '#000000', // цвет фона
]
  • \Mo3golom\WonderStories\Enum\BlockTypes::TYPE_TIMER - таймер обратного отсчета. Стартовое число зависит от продолжительности блока (setDuration). Имеет следующие настройки:
[
    'font_color' => '#ffffff', // цвет текста в HEX формате
    'font_size' => 32, // размер текста
    'font_path' => 'path_to_font.ttf', // путь до файла шрифта .ttf
    'offset' => 16, // отступ от краев фона (будет заметно, если отрисовать фон)
    'background_enable' => true, // включить отрисовку фона
    'background_color' => '#000000', // цвет фона
]

License

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