i have this page (very simple to show what i need) to upload flv files - i read some posts about ffmpeg-php but how to install in on the server if it's the solution and how to use it?
<?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
}
?>
and need to create a thumbnail for video uploaded in another folder with the same name
any help ? thanks in advance
Installing ffmpeg should be straightforward. On any Ubuntu/Debian based distro, use apt-get:
apt-get install ffmpeg
After that, you can use it to create a thumbnail.
First you need to get a random time location from your file:
$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));
}
Now that your $second
variable is set. Get the actual thumbnail:
$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`;
It will automatically save the thumbnail to thumbnails/random_name.jpg
(you may want to change that name based on the uploaded video)
If you want to resize the thumbnail, use the -s
parameter (-s 300x300
)
Check out the ffmpeg documentation for a complete list of parameters you can use.
Or you can do it in the browser with HTML5's video tag and canvas, see:
https://gist.github.com/adamjimenez/5917897