необходимо создать миниатюру для загрузки видео (очень простой код) - PullRequest
7 голосов
/ 29 января 2012

У меня есть эта страница (очень просто показать, что мне нужно) для загрузки 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
}
?>

и нужно создать миниатюру для видео, загруженного в другую папку с тем же именем любая помощь ? заранее спасибо

Ответы [ 2 ]

10 голосов
/ 29 января 2012

Установка 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 (-s 300x300)

Ознакомьтесь с документацией ffmpeg для получения полного списка параметров, которые вы можете использовать.

3 голосов
/ 03 июля 2013

Или вы можете сделать это в браузере с помощью HTML5-тега video и canvas, см .: https://gist.github.com/adamjimenez/5917897

...