Reputation:
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 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
Upvotes: 5
Views: 6949
Reputation: 1
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.
Upvotes: 0
Reputation:
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);
}
Upvotes: 5
Reputation: 3071
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);
*/
}
Upvotes: 1