Creating thumbnail Image from video not working - php

I have code in php. This works fine in my local server . But the same code is not working in my destination remote server which is hosted in AWS .
<?php
$ffmpeg = "C:\\ffmpeg\\bin\\ffmpeg";
$imagefile = "1.png";
$size = "920*440";
$getfromsecond = 44;
$cmd = "$ffmpeg -i aaa.mp4 -an -ss $getfromsecond -s $size $imagefile";
$p =system($cmd);
?>
My aaa.mp4 is in same folder as in the script locates .

You are trying to access your C:\ drive which is not located on your AWS server.
You need to specify your remote destination.

Related

ffmpeg command for php not working on live server

I am generating thumbnail from video while uploading and I have installed ffmpeg on local but in live server ffmpeg is not installed and hosting provider asking extra charges to install it, so i have kept ffmpeg directory which i copied from local machine and placed to live server and provided live server path and try to call script but it is not generating thumbnail
$ffmpeg = 'https://example.com/ffmpeg/bin/ffmpeg.exe';
$video_temp_path = $_FILES['upload_file']['tmp_name'];
$video_title = $_FILES['upload_video']['name'];
$image = 'upload/' . $video_title . uniqid().'.jpg';
//time to take screenshot at
$interval = 5;
//screenshot size
$size = '320x240';
//ffmpeg command
$command = $ffmpeg.' -i '.$video_temp_path.' -deinterlace -an -ss '.$interval.' -f mjpeg -t 1 -r 1 -y -s '.$size.' '.$image.' 2>&1';
exec($command, $array);
after upload ffmpeg on live server restart server first then it's work

FFMPEG is not working centos linux server

I am using FFMPEG for video thumbnails creation,
I have downloaded FFMPEG (ffmpeg-2.4.2.tar.bz2) and installed in server.
located in
/usr/bin/ffmpeg
and used in this below code:
if($extension === 'mp4' OR $extension == 'MP4' )
{
$video = $timestamp.$imagename;
$videoname=substr($imagename,0, -4).$timestamp;
$image = "sites/default/files/content_images/{$videoname}-thumb.jpg";
var_dump($video);
$cmd="/usr/bin/ffmpeg -i /opt/lampp/htdocs/mydashboard/sites/default/files/content_videos/".$video." -ss 00:00:14.435 -f image2 -vframes 1 /opt/lampp/htdocs/mydashboard/sites/default/files/content_images/$videoname-thumb.jpg";
$cmdstr = $cmd;
$locale = 'en_IN.UTF-8';
setlocale(LC_ALL, $locale);
putenv('LC_ALL='.$locale);
echo exec($cmd);
but this command not working as i expect..
$cmd="/usr/bin/ffmpeg -i /opt/lampp/htdocs/mydashboard/sites/default/files/content_videos/".$video." -ss 00:00:14.435 -f image2 -vframes 1 /opt/lampp/htdocs/mydashboard/sites/default/files/content_images/$videoname-thumb.jpg";
issue was video thumbnail is not created,when we upload videos.
any help great appreciation
Variable concatenation is wrong at the end of your cmd definition.
Try with :
[...]les/content_images/".$videoname."-thumb.jpg";
Addendum :
What are the rights on the output directory ?
Your CMD will be run with your webserver user (www-data on Debian systems, httpd on RH, etc...). Make sure directory ownership and/or write rights are set properly

ffmpeg working on wamp not in xammp

I have created thumbnail image file of video file using ffmpeg in php. It is successfully working on wamp server.Now want to use it in xampp server but its not working.... This is my code for creating thumbnails:
$ffmpeg = "C:\\ffmpeg\\bin\\ffmpeg";
$videoFile = implode($_FILES["file"]["tmp_name"]);
$imageFile = "thumb/".time()."_thumbs.jpg";
$size = "800x420";
Why its not working on xampp... Thanks !!!!
$getFromSecond = 25;
$cmd = "$ffmpeg -i $videoFile -an -ss $getFromSecond -s $size $imageFile";
Try to enable "extension=php_ffmpeg.dll" directive in your php.ini.

Generate thumbnail for a bunch of mp4 video in a folder

I have read this but didnt help too much.
I have a folder called videos and another folder called thumbnails. I have many mp4 videos in video folder and want to catch thumbnails at 4th second to the thumbnails folder using ffmpeg and php.
I am using Wamp server 2.2 on windows whit php 5.3.8 and Apache 2.2.21
I downloaded ffmpeg from FFmpeg Windows Builds section of ffmpeg download page and the static 32 build from this link.
I extracted the 7z file to my website root
here is my php code:
$ffmpeg = "includes/ffmpeg/bin/ffmpeg";
foreach(glob('files/videos/*.mp4') as $pathname){
$filename = substr($pathname,13,strripos($pathname,'.mp4')-13);
$thumbnail = 'files/thumbnails/'.$filename.'.jpg';
exec("ffmpeg -i $pathname -an -y -f mjpeg -ss 00:00:04 -vframes 1 $thumbnail");
}
but nothing happens and the thumbnails folder is always empty!
- How can I find out is ffmpeg installed on my server or not?
- How can I get my script to work?
Please help
try this:
$ffmpeg = "c:/wamp/www/includes/ffmpeg/bin/ffmpeg";
$videos = "c:/wamp/www/files/videos/*.mp4";
$ouput_path = "c:/wamp/www/files/thumbnails/";
foreach(glob($videos) as $v_file){
$fname = basename($v_file, ".mp4");
$thmb = $ouput_path.$fname.'_tn.jpg';
$cmd = "$ffmpeg -i $v_file -an -y -f mjpeg -ss 00:00:04 -vframes 1 $thmb";
$stat = system ($cmd);
}
Try with absolute paths in commands instead of depending on PATH ENV variable:
Both exec() and system() works. Resolve the path definitions.
/* Using Absolute paths */
$ffmpeg = "c:/wamp/www/includes/ffmpeg/bin/ffmpeg";
$videos = "c:/wamp/www/files/videos/*.mp4";
$ouput_path = "c:/wamp/www/files/thumbnails/";
foreach(glob($videos) as $video_file){
$filename = basename($video_file, ".mp4");
$thumbnail = $ouput_path.$filename.'_tn.jpg';
$command = "$ffmpeg -i $video_file -an -y -f mjpeg -ss 00:00:04 -vframes 1 $thumbnail";
$status = system ($command);
/*or
$status = exec($command);
if ($status === false) {
var_dump("ERROR: Conversion Failed!!!!");
} else
var_dump($status);
*/
}
I´m not allowed to add a comment, so here (as a Post) is what I found out while dealing with this:
The white space in the file name prevents ffmpeg from finding the right file. So one way is to change the file name.

Create thumbnail image from video in server in php

In my website I have a option to upload video file by the user. In that I want to create a thumbnail image of that video. I have tried in local system with some coding it is working fine. I tried same coding in to service it is not working. I checked for ffmpeg enabled in server, it was disabled. Is their any other option to creating thumbnail in server with out enabling the ffmpeg? Please help me to find the solution.
you can use ffmpeg ( Form you tag i guess you knew )
What you needed to pass to ffmpeg is
-i = input file
-deinterlace = deinterlace pictures
-an = disable audio recording
-ss = start time in the video (seconds)
-t = duration of the recording (seconds)
-r = set frame rate
-y = overwrite existing file
-s = resolution size
-f = force format
Example
// where ffmpeg is located
$ffmpeg = '/usr/bin/ffmpeg';
//video dir
$video = 'path/to/video';
//where to save the image
$image = 'path/to/image.jpg';
//time to take screenshot at
$interval = 5;
//screenshot size
$size = '640x480';
//ffmpeg command
$cmd = "$ffmpeg -i $video -deinterlace -an -ss $interval -f mjpeg -t 1 -r 1 -y -s $size $image 2>&1";
exec($cmd);
Or try
$second = 15;
$cmd = "$ffmpeg -itsoffset -$second -i $video -vcodec mjpeg -vframes 1 -an -f rawvideo -s $size $image";
exec($cmd);
Think you should also look at detail dissuasion on possible issues
ffmpeg-php to create thumbnail of video
If you don't want to use ffmpeg you could use mencoder as an alternative too. But in the end you will need to install ffmpeg/mencoder and then use that to render the thumbnail as PHP has no built in functionality to handle video.
If you're on a shared webhost you might want to look into services like zencoder that can generate you converted streams of video including thumbnails:
https://app.zencoder.com/docs/api/encoding/thumbnails

Categories