Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

need to create thumbnail for video uploading (very simple code)

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

like image 442
jq beginner Avatar asked Jan 29 '12 12:01

jq beginner


People also ask

How do I create a thumbnail in HTML?

Create Thumbnails Individually Offline To create the thumbnail, open the image in Paint and then click the "Resize" button at the top of the page. Click the "Pixels" radio button and then enter the horizontal and vertical dimensions for the thumbnail.

How do I create a thumbnail from a video in Python?

You can use ffmpeg-python to create a thumbnail and upload it for use with your video. If you don't want to get into learning FFMPEG, you can also use api. video's endpoint that allows you to pick a time from the video, and have it set as the video thumbnail for you automatically.


2 Answers

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.

like image 100
Tony Avatar answered Sep 18 '22 15:09

Tony


Or you can do it in the browser with HTML5's video tag and canvas, see: https://gist.github.com/adamjimenez/5917897

like image 43
Adam Jimenez Avatar answered Sep 19 '22 15:09

Adam Jimenez