Вход Регистрация
Файл: panel/screen.php
Строк: 78
<?php
require '../system/core.php';

/* Проверяем права доступа */
if (!$login) message('Ошибка авторизации!', '/panel/login.php');
if (!
check_right($user['id'], 5, $db)) message('Недостаточно прав!', '/panel/index.php');

/* Если не указан файл */
if (!isset($_GET['id'])) {
    
message('Вы не указали файл!', '/panel/index.php');
}

/* Ищем указанный файл в БД */
$query = $db->query("SELECT * FROM `data` WHERE `id`='" . num($_GET['id']) . "'");
if (
$db->num($query) != 1) {
    
message('Указанный файл не найден!', '/panel/index.php');
}
$result = $db->fetch($query);

$path_dir = $_SERVER['DOCUMENT_ROOT'] . '/files/screens/' . $result['id'] . '/';

if (!empty(
$_POST)) {


    
$path = $_SERVER['DOCUMENT_ROOT'] . '/' . $result['file'];

    function 
imageresize2($input, $output, $outheight, $outwidth = 0)
    {
        
//exit($output);
        
$err = array();
        if (!
is_file($input)) {
            
$err[] = 'Файла по пути <b>' . $input . '</b> не существует';
        }
        if (empty(
$err)) {
            
$im = new imagick($input);
            
$imageprop = $im->getImageGeometry();
            
$width = $imageprop['width'];
            
$height = $imageprop['height'];

            if (empty(
$outwidth)) {
                
$outwidth = ($outheight / $height) * $width;
            }
            
$im->resizeImage($outwidth, $outheight, imagick::FILTER_LANCZOS, 1);
            
$im->writeImage($output);
        }
    }

    function 
movie_progress($video, $screens_path = FALSE, $screens_count = 10)
    {
        if (
$screens_count > 30) {
            exit(
'Слишком много скриншотов');
        }
        
$movie = new ffmpeg_movie($video);
        if (!
$movie) {
            return;
        }
        
$frame_count = $movie->getFrameCount();
        
// получаем скриншоты
        
$screens = FALSE;
        if (
$screens_path) {
            
// определяем интервал, через который будем извлекать скрины
            
$step = floor($frame_count / ($screens_count));
            
$screens = array();
            
// извлекаем скриншоты, и складываем пути в массив
            
$count = 1;
            for (
$i = $step; $i < $frame_count; $i += $step) {
                
$filename = $screens_path . $count . '.jpg';
                
$frame = $movie->getFrame($i);
                
$image = $frame->toGDImage();
                
imagepng($image, $filename);
                if (
is_file($filename)) {
                    
$screens[] = $filename;
                }

                
/* Минимизация */
                
echo 'TEST: ' . $screens_path . 'min_' . $count . '.jpg<br/>';
                
imageresize2($filename, $screens_path . 'min_' . $count . '.jpg', 240);
                
$count++;
            }
        }
        
// возвращаем статистику и список скринов
        
return array(
            
'width' => $movie->getFrameWidth(), // ширина в пикселях
            
'height' => $movie->getFrameHeight(), // высота в пикселях
            
'frame_count' => $frame_count, // количество фреймов
            
'bitrate' => $movie->getBitRate(), // битрейт
            
'video_bitrate' => $movie->getVideoBitRate(),
            
'video_codec' => $movie->getVideoCodec(),
            
'audio_codec' => $movie->getAudioCodec(),
            
'screens' => $screens, // массив со скриншотами
        
);
    }

    if (!
file_exists($path_dir)) {
        
mkdir($path_dir);
    }
    
$_POST['count'] = (int)$_POST['count'];
    
movie_progress($path, $path_dir, $_POST['count']);
}


/* Выводим страницу */
$data['title'] = 'Управление скриншотами';
$data['result'] = $result;
if (
file_exists($path_dir)) {
    
$screens = scandir($path_dir);
} else {
    
$screens = array();
}

$data['screens'] = array();
if (
count($screens)) {
    foreach (
$screens AS $name) {
        if (
strripos($name, 'min') !== false) {
            
$data['screens'][] = $name;
        }
    }
}
$tpl->display('panel/screen', $data);
Онлайн: 2
Реклама