Working on thumbnail support for video files.

This commit is contained in:
jgen 2014-04-18 01:37:27 -04:00
parent 6c9a4a3b86
commit 273d386d22

View File

@ -17,26 +17,59 @@
*/
class VideoFileHandler extends DataHandlerExtension {
protected function create_thumb($hash) {
public function onInitExt(InitExtEvent $event) {
global $config;
$config->set_default_string('video_thumb_engine', 'static');
$config->set_default_string('thumb_ffmpeg_path', '');
}
public function onSetupBuilding(SetupBuildingEvent $event) {
global $config;
$thumbers = array();
$thumbers['None'] = "static";
$thumbers['ffmpeg'] = "ffmpeg";
$sb = new SetupBlock("Video Thumbnail Options");
$sb->add_choice_option("video_thumb_engine", $thumbers, "Engine: ");
if($config->get_string("video_thumb_engine") == "ffmpeg") {
$sb->add_label("<br>Path to ffmpeg: ");
$sb->add_text_option("thumb_ffmpeg_path");
}
$event->panel->add_block($sb);
}
protected function create_thumb($hash) {
global $config;
$w = $config->get_int("thumb_width");
$h = $config->get_int("thumb_height");
$q = $config->get_int("thumb_quality");
// this is never used...
//$q = $config->get_int("thumb_quality");
$inname = warehouse_path("images", $hash);
$outname = warehouse_path("thumbs", $hash);
switch($config->get_string("video_thumb_engine")) {
switch($config->get_string("video_thumb_engine"))
{
default:
case 'static':
copy("ext/handle_video/thumb.jpg", $outname);
break;
case 'ffmpeg':
$ffmpeg = $config->get_string("thumb_ffmpeg_path");
$cmd = "$ffmpeg -i $inname -s {$w}x{$h} -ss 00:00:00.0 -f image2 -vframes 1 $outname"
$inname = escapeshellarg($inname);
$outname = escapeshellarg($outname);
$cmd = "{$ffmpeg} -i {$inname} -s {$w}x{$h} -ss 00:00:00.0 -f image2 -vframes 1 {$outname}";
exec($cmd, $output, $ret);
log_debug('handle_video', "Generating thumbnail with command `$cmd`, returns $ret");
break;
}
}
@ -47,7 +80,7 @@ class VideoFileHandler extends DataHandlerExtension {
}
protected function create_image_from_data($filename, $metadata) {
global $config;
//global $config;
$image = new Image();