From 2a04abdc3aab9357a7f72032dd9a6f3c1cb64af5 Mon Sep 17 00:00:00 2001 From: Christian Haschek Date: Tue, 24 Nov 2015 00:35:57 +0100 Subject: [PATCH] added resizing for mp4 files --- inc/core.php | 13 ++++++++++--- models/pictsharemodel.php | 40 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/inc/core.php b/inc/core.php index 58a46cb..6b50171 100644 --- a/inc/core.php +++ b/inc/core.php @@ -150,13 +150,11 @@ function renderImage($data) imagepng($im); break; case 'gif': - if($data['mp4']) { header("Content-Type: video/mp4"); readfile($pm->gifToMP4($path)); } - else { header ("Content-type: image/gif"); @@ -165,7 +163,16 @@ function renderImage($data) break; case 'mp4': - header("Content-Type: video/mp4"); + if(!$cached) + { + $path = $pm->resizeMP4($data,$cachepath); + } + header('Content-type: video/mp4'); + //header('Content-type: video/mpeg'); + header('Content-disposition: inline'); + header("Content-Transfer-Encoding:­ binary"); + header("Content-Length: ".filesize($path)); + readfile($path); break; } diff --git a/models/pictsharemodel.php b/models/pictsharemodel.php index d438890..6e527ae 100644 --- a/models/pictsharemodel.php +++ b/models/pictsharemodel.php @@ -629,13 +629,51 @@ class PictshareModel extends Model return $ismp4; } + + function resizeMP4($data,$cachepath) + { + $file = ROOT.DS.'upload'.DS.$data['hash'].DS.$data['hash']; + $file = escapeshellarg($file); + $tmp = '/dev/null'; + $bin = escapeshellcmd(ROOT.DS.'bin'.DS.'ffmpeg'); + + $size = $data['size']; + + if(!$size) return $file; + + if(!is_numeric($size)) + $size = explode('x',$size); + + if(is_array($size)) + { + $maxwidth = $size[0]; + $maxheight = $size[1]; + } + else if($size) + { + $maxwidth = $size; + $maxheight = 0; + } + + if($maxwidth>1080) + $maxwidth = 1080; + + //if(!$maxheight) + $maxheight = 'trunc(ow/a/2)*2'; + + $cmd = "$bin -i $file -y -vf scale=\"$maxwidth:$maxheight\" -c:v libx264 $cachepath"; + + system($cmd); + + return $cachepath; + } function gifToMP4($gifpath) { $bin = escapeshellcmd(ROOT.DS.'bin'.DS.'ffmpeg'); $file = escapeshellarg($gifpath); $mp4file = $gifpath.'.mp4'; - $cmd = "$bin -f gif -i $file $file.mp4"; + $cmd = "$bin -f gif -y -i $file -c:v libx264 $file.mp4"; system($cmd);