/** * Generate a thumbnail from a video stream using the FFMpeg library. * * @param string $file * @param string $size * @param string $filename * @return boolean */ function process(&$medium, &$gallery) { //$file, $size, $filename) { zmgimport('org/.zoomfactory.lib.helpers.zmgFileHelper'); //$temp_dir = zmgEnv::getTempDir() . DS.substr(uniqid("zoom_"), 0, 13); //support filesystems which only support 14 char dirnames //if (zmgFileHelper::createDir($temp_dir, 0777)) { $thumb_file = ereg_replace("(.*)\\.([^\\.]*)\$", "\\1", $medium->filename) . ".jpg"; $thumb_path = str_replace($medium->filename, $thumb_file, $medium->getAbsPath()); //$temp_dir.DS.$thumb_file; $cmd = zmgVideoTool::getPath() . "ffmpeg -an -y -t 0:0:0.001 -i \"" . $medium->getAbsPath() . "\" -f mjpeg \"" . $thumb_path . "\""; $output = $retval = null; exec($cmd, $output, $retval); if ($retval || !zmgFileHelper::exists($thumb_path)) { return zmgToolboxPlugin::registerError($medium->filename, 'FFMpeg: Could not create thumbnail: ' . $output); } $thumb_obj = new zmgMedium(zmgDatabase::getDBO()); //temp obj $thumb_obj->filename = $thumb_file; $thumb_obj->setGalleryDir($medium->getGalleryDir()); $ret = true; zmgimport('org.zoomfactory.var.plugins.toolbox.tools.imageTool'); if (!zmgImageTool::process($thumb_obj, $gallery)) { $ret = false; } //clean up! zmgFileHelper::delete($thumb_path); return $ret; //} else { // return zmgToolboxPlugin::registerError($medium->filename, 'FFmpeg: Could not create temporary directory.'); //} }
function processMedium(&$medium, &$gallery) { $mime = $medium->getMimeType(); zmgimport('org.zoomfactory.lib.mime.zmgMimeHelper'); $ok = true; if (zmgMimeHelper::isImage($mime, true)) { zmgimport('org.zoomfactory.var.plugins.toolbox.tools.imageTool'); $ok = zmgImageTool::process($medium, $gallery); if (!$ok) { zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Could not create thumbnail of image file')); //TODO: cleanup } } else { if (zmgMimeHelper::isDocument($mime, true) && zmgMimeHelper::isIndexable($mime, true)) { zmgimport('org.zoomfactory.var.plugins.toolbox.tools.documentTool'); $ok = zmgDocumentTool::process($medium, $gallery); if (!$ok) { zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Could not index document')); //TODO: cleanup } } else { if (zmgMimeHelper::isVideo($mime, true) && zmgMimeHelper::isThumbnailable($mime, true)) { zmgimport('org.zoomfactory.var.plugins.toolbox.tools.videoTool'); $ok = zmgVideoTool::process($medium, $gallery); if (!$ok) { zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Could not create thumbnail of video file')); //TODO: cleanup } } else { if (zmgMimeHelper::isAudio($mime, true)) { zmgimport('org.zoomfactory.var.plugins.toolbox.tools.audioTool'); $ok = zmgAudioTool::process($medium, $gallery); if (!$ok) { zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Audio file not supported')); //TODO: cleanup } } else { zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Unsupported medium type.')); } } } } return $ok; }