From 273d386d228247cc5914151ec34c6f53b04f7c57 Mon Sep 17 00:00:00 2001 From: jgen Date: Fri, 18 Apr 2014 01:37:27 -0400 Subject: [PATCH] Working on thumbnail support for video files. --- ext/handle_video/main.php | 43 ++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/ext/handle_video/main.php b/ext/handle_video/main.php index a92418ff..122e9930 100644 --- a/ext/handle_video/main.php +++ b/ext/handle_video/main.php @@ -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("
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();