Вход Регистрация
Файл: vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/AdvancedMedia/XStackFilter.php
Строк: 75
<?php

namespace FFMpegFiltersAdvancedMedia;

use 
FFMpegMediaAdvancedMedia;

/**
 * "xstack" filter.
 * This filter helps you to create a collage from the given videos.
 * This filter is supported starting from 4.1 ffmpeg version.
 * (On early versions you can use combinations of hstack and vstack filters).
 *
 * @see https://ffmpeg.org/ffmpeg-filters.html#xstack
 */
class XStackFilter extends AbstractComplexFilter
{
    public const 
LAYOUT_2X2 '0_0|0_h0|w0_0|w0_h0';
    public const 
LAYOUT_1X4 '0_0|0_h0|0_h0+h1|0_h0+h1+h2';
    public const 
LAYOUT_3X3 '0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1';
    public const 
LAYOUT_4X4 '0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2';

    
/**
     * @var string
     */
    
private $layout;

    
/**
     * @var int
     */
    
private $inputsCount;

    
/**
     * CustomComplexFilter constructor.
     *
     * @param string $layout
     * @param int    $inputsCount
     * @param int    $priority
     */
    
public function __construct($layout$inputsCount$priority 0)
    {
        
parent::__construct($priority);
        
$this->layout $layout;
        
$this->inputsCount $inputsCount;
    }

    
/**
     * @param int $count
     *
     * @return string
     */
    
public static function getInputByCount($count)
    {
        
$result '';
        for (
$i 0$i $count; ++$i) {
            
$result .= '['.$i.':v]';
        }

        return 
$result;
    }

    
/**
     * Get name of the filter.
     *
     * @return string
     */
    
public function getName()
    {
        return 
'xstack';
    }

    
/**
     * Get minimal version of ffmpeg starting with which this filter is supported.
     *
     * @return string
     */
    
public function getMinimalFFMpegVersion()
    {
        return 
'4.1';
    }

    
/**
     * {@inheritdoc}
     */
    
public function applyComplex(AdvancedMedia $media)
    {
        return [
            
'-filter_complex',
            
$this->getName().$this->buildFilterOptions([
                
'inputs' => $this->inputsCount,
                
'layout' => $this->layout,
            ]),
        ];
    }
}
Онлайн: 0
Реклама