Support ffmpeg and avconv depending on which you have
This commit is contained in:
parent
41e36e1f28
commit
55546a5aab
@ -2,7 +2,7 @@
|
|||||||
/**
|
/**
|
||||||
* GNU social - a federating social network
|
* GNU social - a federating social network
|
||||||
*
|
*
|
||||||
* Plugin to make thumbnails of video files with avconv
|
* Plugin to make thumbnails of video files with ffmpeg/avconv
|
||||||
*
|
*
|
||||||
* PHP version 5
|
* PHP version 5
|
||||||
*
|
*
|
||||||
@ -31,13 +31,13 @@ if (!defined('GNUSOCIAL')) { exit(1); }
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Dependencies:
|
* Dependencies:
|
||||||
* avconv (external program call)
|
* ffmpeg/avconv (external program call)
|
||||||
* php5-gd
|
* php5-gd
|
||||||
*
|
*
|
||||||
* Todo:
|
* Todo:
|
||||||
* Make sure we support ffmpeg too, so we're not super Debian oriented.
|
* Make sure we support ffmpeg too, so we're not super Debian oriented.
|
||||||
*
|
*
|
||||||
* Video support will depend on your avconv.
|
* Video support will depend on your ffmpeg/avconv.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class VideoThumbnailsPlugin extends Plugin
|
class VideoThumbnailsPlugin extends Plugin
|
||||||
@ -56,16 +56,25 @@ class VideoThumbnailsPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Let's save our frame to a temporary file. If we fail, remove it.
|
// Let's save our frame to a temporary file. If we fail, remove it.
|
||||||
$imgPath = tempnam(sys_get_temp_dir(), 'socialthumb-');
|
$tmp_imgPath = tempnam(sys_get_temp_dir(), 'socialthumb-');
|
||||||
|
|
||||||
$result = exec('avconv -i '.escapeshellarg($file->getPath()).' -vcodec mjpeg -vframes 1 -f image2 -an '.escapeshellarg($imgPath));
|
$cmd = null;
|
||||||
|
if (shell_exec('which ffmpeg')) {
|
||||||
if (!getimagesize($imgPath)) {
|
$cmd = 'ffmpeg';
|
||||||
common_debug('exec of "avconv" produced a bad/nonexisting image it seems');
|
} elseif (shell_exec('which avconv')) {
|
||||||
@unlink($imgPath);
|
$cmd = 'avconv';
|
||||||
$imgPath = null; // pretend we didn't touch it
|
} else {
|
||||||
|
common_log(LOG_ERR, 'Neither ffmpeg nor avconv was found in your PATH. Cannot create video thumbnail.');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
$result = exec($cmd.' -i '.escapeshellarg($file->getPath()).' -vcodec mjpeg -vframes 1 -f image2 -an '.escapeshellarg($imgPath));
|
||||||
|
|
||||||
|
if (!getimagesize($tmp_imgPath)) {
|
||||||
|
common_debug('exec of "avconv" produced a bad/nonexisting image it seems');
|
||||||
|
@unlink($tmp_imgPath);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
$imgPath = $tmp_imgPath;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user