public static function gif($file, $options=array(), $target_extension='gif') { // merge the options with the defaults $options = array_merge(array( 'temp_dir' => '/tmp', 'width' => 320, 'height' => 240, 'ratio' => false, //PHPVideoToolkit::RATIO_STANDARD, 'frame_rate' => 1, 'loop_output' => 0, // 0 will loop endlessly 'output_dir' => null, // this doesn't have to be set it can be automatically retreived from 'output_file' 'output_file' => '#filename.#ext', // you can use #filename to automagically hold the filename and #ext to automagically hold the target format extension 'output_title' => '#filename', // you can use #filename to automagically hold the filename and #ext to automagically hold the target format extension 'use_multipass' => false, 'generate_log' => true, 'log_directory' => null, 'die_on_error' => false, 'overwrite_mode' => PHPVideoToolkit::OVERWRITE_FAIL ), $options); // start PHPVideoToolkit class require_once dirname(dirname(__FILE__)).DS.'phpvideotoolkit.php5.php'; $toolkit = new PHPVideoToolkit($options['temp_dir']); $toolkit->on_error_die = $options['die_on_error']; // get the output directory if($options['output_dir']) { $output_dir = $options['output_dir']; } else { $output_dir = dirname($options['output_file']); $output_dir = $output_dir == '.' ? dirname($file) : $output_dir; } // get the filename parts $filename = basename($file); $filename_minus_ext = substr($filename, 0, strrpos($filename, '.')); // get the output filename $output_filename = str_replace(array('#filename', '#ext'), array($filename_minus_ext, $target_extension), basename($options['output_file'])); // set the input file $ok = $toolkit->setInputFile($file); // check the return value in-case of error if(!$ok) { $toolkit->reset(); array_push(self::$_error_messages, $toolkit->getLastError()); return false; } $toolkit->setFormat(PHPVideoToolkit::FORMAT_GIF); $toolkit->disableAudio(); if($options['ratio'] !== false) { $toolkit->setVideoAspectRatio($options['ratio']); } $toolkit->setVideoOutputDimensions($options['width'], $options['height']); $toolkit->setVideoFrameRate($options['frame_rate']); $toolkit->addCommand('-loop_output', $options['loop_output']); // set the output details and overwrite if nessecary $ok = $toolkit->setOutput($output_dir, $output_filename, $options['overwrite_mode']); // check the return value in-case of error if(!$ok) { $toolkit->reset(); array_push(self::$_error_messages, $toolkit->getLastError()); return false; } // execute the ffmpeg command using multiple passes and log the calls and PHPVideoToolkit results $result = $toolkit->execute($options['use_multipass'], $options['generate_log']); array_push(self::$_commands, $toolkit->getLastCommand()); // check the return value in-case of error if($result !== PHPVideoToolkit::RESULT_OK) { // move the log file to the log directory as something has gone wrong if($options['generate_log']) { $log_dir = $options['log_directory'] ? $options['log_directory'] : $output_dir; $toolkit->moveLog($log_dir.$filename_minus_ext.'.log'); array_push(self::$_log_files, $log_dir.$filename_minus_ext.'.log'); } $toolkit->reset(); array_push(self::$_error_messages, $toolkit->getLastError()); return $result; } array_push(self::$_outputs, $toolkit->getLastOutput()); // reset $toolkit->reset(); return $result; }