1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

[СТАТЬЯ]Как сделать скриншот из видеофайла на php?

Тема в разделе "Web Coding", создана пользователем Slayter, 14 фев 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Slayter

    Slayter

    Регистр.:
    8 апр 2006
    Сообщения:
    232
    Симпатии:
    52
    [СТАТЬЯ] Как сделать скриншот из видеофайла на php?

    Автор статьи: defuzz.ru && defuzzcms.ru :)


    План
    • установка ffmpeg-php;
    • его использование.
    1. Установка ffmpeg-php.
    [Перейти по ссылке]
    Для начала проверим - а вдруг установлен!?
    PHP:
    <?php
    phpinfo
    ();
    ?>
    Ищем на странице "ffmpeg" - если находит, то всё отлично.

    1.1. Установка под FreeBSD.

    Можно переходить ко второму шагу.

    1.2. Установка под Linux.
    Через менеджер пакетов, если они есть в репозитории.

    2. Использование ffmpeg-php.
    Полистав Перейти по ссылке отпадают все лишние вопросы по поводу вывода какой-либо ещё дополнительной информации :)
    PHP:
    <?php
    //получаем номер кадра для скриншота
    $frame intval($_GET['frame']);
    //засекаем unixtime для уникального названия картинки
    $time  time();
    //заюзаем непосредственно сам экстеншн
    $movie = new ffmpeg_movie($_SERVER['DOCUMENT_ROOT'].'/experiments/video/nagitare.wmv');
    //получаем длительность ролика в секундах
    $duration $movie->getDuration();
    //если он длится больше минуты
    if ($duration>60){
        
    //получаем путем округления "вниз" результата от деления длятельности на 60 секунд длительность ролика в минутах
        
    $minutes floor($movie->getDuration()/60);
        
    //чтобы получить секунды просто смотрим остаток от деления на 60
        
    $seconds $movie->getDuration()%60;
    }
    //ну просто вывели сколько он длится
    echo 'File: <font color="red">'.$_SERVER['DOCUMENT_ROOT'].'/experiments/video/nagitare.wmv</font> длится '.$duration.' секунд!<br />';
    //определили абсолютный путь до картинки, в которую будет сохранен наш скриншот
    $img $_SERVER['DOCUMENT_ROOT'].'/experiments/video/'.$time.'_'.$frame.'.jpg';
    //заюзаем другой класс входящий в экстеншн ffmpeg-php. $frame - номер кадра, не забываем
    $ff_frame $movie->getFrame($frame);
    //если такой кадр есть
    if ($ff_frame) {
        
    //$ff_frame-toGDImege возвращает truecolor GD картинку
        
    $gd_image $ff_frame->toGDImage();
        
    //и если оно её вернуло
        
    if ($gd_image) {
            
    //создаем png или imagejpeg(); imagegif(); картинки
            
    imagepng($gd_image$img);
            
    //очищаем буфер
            
    imagedestroy($gd_image);
        }
    }
    //выводим длительность ролика в минутах и секундах
    echo $minutes.' мин '.$seconds.' секунд.<br />';
    //ну и показываем только что сгенерированный скриншот :-)
    echo '<img src="'.$time.'_'.$frame.'.jpg" alt="Скриншот"/>';
    ?>
    Демо: Перейти по ссылке - вместо 20 подставляем номер любого кадра, который существует в этом ролике, т.е. не превышает его длину.
     
    ser1k, v3sp3r, D@nil и ещё 1-му нравится это.
  2. kaspruk

    kaspruk Постоялец

    Регистр.:
    8 янв 2007
    Сообщения:
    61
    Симпатии:
    16
    Интересная информация, а возможно установить ffmpeg-php на windows под денвер, хочется отработать скрипт клона youtube на локалке, так как мои хостеры не хотят ставить ffmpeg-php на сервак.
     
  3. Slayter

    Slayter

    Регистр.:
    8 апр 2006
    Сообщения:
    232
    Симпатии:
    52
    Честно скажу - ответа не знаю.
    BTW, ffmpeg и ffmpeg-php это разные вещи. ffmpeg-php не умеет кодировать видео, т.е. клон ютуба не накодишь - т.к. там требуется перевод из одного формата в другой(в flv для трансляции через flashplayer[Перейти по ссылке]). Это может только ffmpeg(ну или любая другая программка). Мы просто юзаем ф-ю пхп exec()[или system()] и исполняем команду, ну и потом работаем с результатами которые отдал ffmpeg.
    Естественно, хостер таких экспериментов не допустит. Слишком ресурсоёмки они. Берите vps или дедик. Не так ведь дорого как кажется ;)
     
  4. Inklose

    Inklose Прохожие

    помогите разобраться, есть ли вариант установки ffmpeg и php_ffmpeg для Windows. Если на Windows у меня стоит и apache и php и mysql - отдельно и работают как web серер
     
Статус темы:
Закрыта.