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

/* Проверяем права доступа */
if (!$loginmessage('Ошибка авторизации!''/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$outheightimagick::FILTER_LANCZOS1);
            
$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
Реклама