55 lines
3.7 KiB
PHP
55 lines
3.7 KiB
PHP
// Excerpt from php/setMediaEncoder.php (3,402 lines) in the WebsiteBuilder
|
|
// source: the create_gif encode operation, lines 614-665, reproduced verbatim.
|
|
if($output_options->encode_media=="create_gif") {
|
|
$output_gif= ".." . $settings->directory . $output_file .$output_options->format .".gif";
|
|
|
|
$docmime= checkFinfo($input_file);
|
|
$doctype=explode("/",$docmime)[0];
|
|
if ($doctype!="video"){
|
|
$output_options->error_message= "We only create gifs from a video - it must be the first video in the media list.";
|
|
$returnFiles = returnFiles ( $output_options, $output_file .$output_options->format . '.mp4', "video/mp4", '', null );
|
|
return $returnFiles;
|
|
}
|
|
|
|
$cmd = "ffmpeg -i ".$input_file." -y -vf fps=".$settings->settings->movie_frame_rate.",scale=".$settings->settings->video_width.":".$settings->settings->video_height.",palettegen palette.png 2>&1";
|
|
// $cmd = "ffmpeg -i ".$input_file." -y -vf fps=10,scale=".$settings->settings->video_width.":".$settings->settings->video_height.",palettegen palette.png 2>&1";
|
|
$result=shell_exec($cmd);
|
|
$first_media=json_decode($settings->add_media)[0];
|
|
|
|
// $cmd = "ffmpeg -ss ".$first_media->add_media_start." -t ".$first_media->add_media_duration." -i ".$input_file." -i palette.png -y -filter_complex \"fps=10[x];[x][1:v]paletteuse\" ".$output_gif." ";
|
|
$cmd = "ffmpeg -ss ".$first_media->add_media_start." -t ".$first_media->add_media_duration." -i ".$input_file." -i palette.png -y -filter_complex \"fps=".$settings->settings->movie_frame_rate.",scale=".$settings->settings->video_width.":".$settings->settings->video_height.":flags=lanczos[x];[x][1:v]paletteuse\" ".$output_gif." ";
|
|
ffmpegMsg("ffmpeg","Creating Gif ", 0,$cmd);
|
|
|
|
// $cmd_2='mogrify -delay '.$_POST['compress_gif_delay'].' -alpha remove '.$matte.' -depth '.$_POST['compress_gif_depth'].' '.$deconstruct.' '.$dither.' -colors '.$_POST['compress_gif_colors'].' -fuzz '.$_POST['compress_gif_fuzz'].'% '.$loop.' '.$optimize.' '.$path.' 2>&1';
|
|
|
|
$_POST['loop_gif']="true";
|
|
$_POST['compress_gif_matte']="false";
|
|
$_POST['compress_gif_deconstruct']="false";
|
|
$_POST['compress_gif_dither']="true";
|
|
$_POST['compress_gif_optimize']="true";
|
|
|
|
$loop=($_POST['loop_gif']=="false")?"-loop 1":"";
|
|
$matte=($_POST['compress_gif_matte']=="true")?"-matte":"";
|
|
$deconstruct=($_POST['compress_gif_deconstruct']=="true")?"-deconstruct":"";
|
|
$dither=($_POST['compress_gif_dither']=="true")?"-dither none ":"";
|
|
$optimize=($_POST['compress_gif_optimize']=="true")?"-layers optimize ":"";
|
|
// $optimize=($_POST['compress_gif_optimize']=="true")?" -coalesce -layers RemoveDups ":"";
|
|
|
|
$_POST['compress_gif_depth']=16;
|
|
$_POST['compress_gif_delay']=0;
|
|
$_POST['compress_gif_fuzz']="4";
|
|
$_POST['compress_gif_colors']="16";
|
|
|
|
$cmd_2='mogrify -delay '.$_POST['compress_gif_delay'].' -alpha remove '.$matte.' -depth '.$_POST['compress_gif_depth'].' '.$deconstruct.' '.$dither.' -colors '.$_POST['compress_gif_colors'].' -fuzz '.$_POST['compress_gif_fuzz'].'% '.$loop.' '.$optimize.' '.$output_gif.' 2>&1';
|
|
$result=shell_exec($cmd_2);
|
|
|
|
|
|
$output_options->edited_url= $output_options->options->directory.$output_file .$output_options->format . '.gif';
|
|
$output_options->edited_name= $output_file .$output_options->format . '.gif';
|
|
$output_options->edited_type = "image/gif";
|
|
$output_options->edited_filetype = explode ( "/", "image/gif");
|
|
insert_document($output_options->edited_url,"image/gif",$output_options->edited_name,"image","edited");
|
|
$returnFiles = returnFiles ( $output_options, $output_file .$output_options->format . '.mp4', "video/mp4", '', null );
|
|
return $returnFiles;
|
|
}
|