У меня есть эта страница (очень просто показать, что мне нужно) для загрузки FLV-файлов – я читал некоторые сообщения о ffmpeg-php, но как установить на сервер, если это решение и как его использовать?
<?php if(isset($_REQUEST['upload'])){ $tmp_name = $_FILES['video']['tmp_name']; $name = $_FILES['video']['name']; $path = "videos/"; move_uploaded_file($tmp_name,$path.$name); } else{ ?> <form action="" method="post" enctype="multipart/form-data"> <input name="video" type="file" /> <input name="upload" type="submit" value="upload" /> </form> <?php } ?>
и нужно создать миниатюру для видео, загруженного в другую папку с тем же именем, какую-либо помощь? заранее спасибо
Установка ffmpeg должна быть простой. В любом дистрибутиве на основе Ubuntu / Debian используйте apt-get:
apt-get install ffmpeg
После этого вы можете использовать его для создания миниатюры.
Сначала вам нужно получить случайное временное местоположение из вашего файла:
$video = $path . escapeshellcmd($_FILES['video']['name']); $cmd = "ffmpeg -i $video 2>&1"; $second = 1; if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time)) { $total = ($time[2] * 3600) + ($time[3] * 60) + $time[4]; $second = rand(1, ($total - 1)); }
Теперь, когда установлена ваша переменная $second
. Получите фактическое уменьшенное изображение:
$image = 'thumbnails/random_name.jpg'; $cmd = "ffmpeg -i $video -deinterlace -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $image 2>&1"; $do = `$cmd`;
Он автоматически сохранит миниатюру для thumbnails/random_name.jpg
(вы можете изменить это имя на основе загруженного видео)
Если вы хотите изменить размер миниатюры, используйте параметр -s 300x300
( -s 300x300
)
Ознакомьтесь с документацией ffmpeg для получения полного списка параметров, которые вы можете использовать.
Или вы можете сделать это в браузере с тегами и холстом HTML5, см. https://gist.github.com/adamjimenez/5917897