forked from GNUsocial/gnu-social
VideoThumbnails changed to use 'exec' call to avconv
This commit is contained in:
parent
9a843548c0
commit
3bbb748a08
@ -2,7 +2,7 @@
|
|||||||
/**
|
/**
|
||||||
* GNU social - a federating social network
|
* GNU social - a federating social network
|
||||||
*
|
*
|
||||||
* Plugin to make thumbnails of video files with ffmpeg
|
* Plugin to make thumbnails of video files with avconv
|
||||||
*
|
*
|
||||||
* PHP version 5
|
* PHP version 5
|
||||||
*
|
*
|
||||||
@ -31,10 +31,13 @@ if (!defined('GNUSOCIAL')) { exit(1); }
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Dependencies:
|
* Dependencies:
|
||||||
* php5-ffmpeg
|
* avconv (external program call)
|
||||||
* php5-gd
|
* php5-gd
|
||||||
*
|
*
|
||||||
* Video support will depend on your ffmpeg.
|
* Todo:
|
||||||
|
* Make sure we support ffmpeg too, so we're not super Debian oriented.
|
||||||
|
*
|
||||||
|
* Video support will depend on your avconv.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class VideoThumbnailsPlugin extends Plugin
|
class VideoThumbnailsPlugin extends Plugin
|
||||||
@ -52,23 +55,13 @@ class VideoThumbnailsPlugin extends Plugin
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$movie = new ffmpeg_movie($file->getPath(), false);
|
|
||||||
|
|
||||||
$frames = $movie->getFrameCount();
|
|
||||||
if ($frames > 0) {
|
|
||||||
$frame = $movie->getFrame(floor($frames/2));
|
|
||||||
} else {
|
|
||||||
$frame = $movie->getNextKeyFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
// We failed to get a frame.
|
|
||||||
if (!$frame instanceof ffmpeg_frame) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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');
|
$imgPath = tempnam(sys_get_temp_dir(), 'socialthumb-');
|
||||||
if (!imagejpeg($frame->toGDImage(), $imgPath)) {
|
|
||||||
|
$result = exec('avconv -i '.escapeshellarg($file->getPath()).' -vcodec mjpeg -vframes 1 -f mjpeg -an '.escapeshellarg($imgPath));
|
||||||
|
|
||||||
|
if (!getimagesize($imgPath)) {
|
||||||
|
common_debug('exec of "avconv" produced a bad/nonexisting image it seems');
|
||||||
@unlink($imgPath);
|
@unlink($imgPath);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user