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

/*
 * This file is part of PHP-FFmpeg.
 *
 * (c) Alchemy <info@alchemy.fr>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace FFMpegFFProbe;

use 
AlchemyBinaryDriverExceptionExecutionFailureException;
use 
FFMpegDriverFFProbeDriver;
use 
FFMpegExceptionRuntimeException;
use 
PsrCacheCacheItemPoolInterface;

class 
OptionsTester implements OptionsTesterInterface
{
    
/** @var FFProbeDriver */
    
private $ffprobe;
    
/** @var CacheItemPoolInterface */
    
private $cache;

    public function 
__construct(FFProbeDriver $ffprobeCacheItemPoolInterface $cache)
    {
        
$this->ffprobe $ffprobe;
        
$this->cache $cache;
    }

    
/**
     * {@inheritdoc}
     */
    
public function has($name)
    {
        
$id md5(sprintf('option-%s'$name));

        if (
$this->cache->hasItem($id)) {
            return 
$this->cache->getItem($id)->get();
        }

        
$output $this->retrieveHelpOutput();

        
$ret = (bool) preg_match('/^'.$name.'/m'$output);

        
$cacheItem $this->cache->getItem($id);
        
$cacheItem->set($ret);
        
$this->cache->save($cacheItem);

        return 
$ret;
    }

    private function 
retrieveHelpOutput()
    {
        
$id 'help';

        if (
$this->cache->hasItem($id)) {
            return 
$this->cache->getItem($id)->get();
        }

        try {
            
$output $this->ffprobe->command(['-help''-loglevel''quiet']);
        } catch (
ExecutionFailureException $e) {
            throw new 
RuntimeException('Your FFProbe version is too old and does not support `-help` option, please upgrade.'$e->getCode(), $e);
        }

        
$cacheItem $this->cache->getItem($id);
        
$cacheItem->set($output);
        
$this->cache->save($cacheItem);

        return 
$output;
    }
}
Онлайн: 1
Реклама