Как выдрать кадры из видео при помощи PHP?
Данная проблема решается очень просто, посредством установки библиотеки ffmpeg на сервер и следующим скриптом
<?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/nagitar e.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=”Скриншот”/>’ ;
?>
![]()