need to create thumbnail for video uploading (very

2019-01-23 08:38发布

问题:

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

回答1:

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.



回答2:

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