added resizing for mp4 files

This commit is contained in:
Christian Haschek
2015-11-24 00:35:57 +01:00
parent 121ae8b19a
commit 2a04abdc3a
2 changed files with 49 additions and 4 deletions

View File

@@ -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;
}

View File

@@ -630,12 +630,50 @@ 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);