clipbucket/upload/admin_area/lab_resources/experiments.php

256 lines
8.2 KiB
PHP
Raw Normal View History

2013-10-07 12:17:06 +00:00
<?php
/**
* @Software : ClipBucket
* @Author : Arslan Hassan
* @Since : Jan 5 2009
* @Function : Add Member
* @License : Attribution Assurance License -- http://www.opensource.org/licenses/attribution.php
*/
//setting timeout so that server just dont stuck, right for just 25 seconds
if(!ini_get('safe_mode'))
set_time_limit(25);
require'../../includes/admin_config.php';
require_once(BASEDIR.'/includes/classes/conversion/ffmpeg.class.php');
$testVidsDir = ADMINBASEDIR.'/lab_resources/testing_videos';
$userquery->admin_login_check();
if(isset($_POST['experiment']))
{
$mode = $_POST['mode'];
$victim = $_POST['victim'];
2014-09-24 14:28:10 +00:00
$height = $_POST['height'];
$width = $_POST['width'];
$v_bitrate = $_POST['vbr'];
$a_bitrate = $_POST['abr'];
$preset = $_POST['preset'];
2013-10-07 12:17:06 +00:00
switch($mode)
{
default:
2014-11-22 11:30:12 +00:00
echo json_encode(array("err"=>"Well hellow :/"));
2013-10-07 12:17:06 +00:00
break;
case "getPreDetails":
{
$err = array();
$msg = array();
if(!function_exists("exec"))
{
$err[] = "<br>C'mon man! there shuld be some 'exec' functions :(";
$err[] = "<div class=\"expErr\">Exec function does not exist</div>";
theEnd();
}else
$msg[] = "<div class=\"expOK\">Exec function exists</div>";
//testing php compatiblity
$phpTest = shell_output(php_path()." -q ".ADMINBASEDIR.'/lab_resources/echo.php');
if(!$phpTest)
{
$err[] = "<br>OMG! Your host is so chipless that it doesn't even allow you to use PHP CLI , very bad!";
$err[] = "<div class=\"expErr\">PHP CLI is not enabled</div>";
theEnd();
}else
$msg[] = "<div class=\"expOK\">PHP CLI is enabled</div>";
//now get ffmpeg details
$ffmpegDetails = shell_output($Cbucket->configs['ffmpegpath']." -version ");
2014-09-24 14:28:10 +00:00
if(preg_match("/ffmpeg/i", $ffmpegDetails))
2013-10-07 12:17:06 +00:00
{
2014-09-24 14:28:10 +00:00
//$msg[] = "<br>".nl2br($ffmpegDetails);
2013-10-07 12:17:06 +00:00
$msg[] = "<div class=\"expOK\">FFMPEG Exists</div>";
2014-09-24 14:28:10 +00:00
2013-10-07 12:17:06 +00:00
}
2014-09-24 14:28:10 +00:00
else
2013-10-07 12:17:06 +00:00
{
2014-09-24 14:28:10 +00:00
$err[] = '<br>How can human work without brain? same situation is with video conversion, no ffmpeg, no conversion.';
$err[] = "<div class=\"expErr\">FFMPEG does not exist</div>";
2013-10-07 12:17:06 +00:00
theEnd();
}
$victimFile = $testVidsDir.'/'.$victim;
//getting video details..
$ffmpegObj = new ffmpeg($victimFile);
$vidDetails = $ffmpegObj->get_file_info();
2014-09-24 14:28:10 +00:00
if($vidDetails)
2013-10-07 12:17:06 +00:00
{
2014-09-24 14:28:10 +00:00
//echo "here";
$t=time();
if ($preset == "" || $height == "" || $width == "" || $v_bitrate == "" || $a_bitrate == "")
{
$preset = 'medium';
$height = '640';
$width = '1280';
$v_bitrate = '720k';
$a_bitrate = '96k';
}
$msg[] = "<br>".nl2br($preset);
$msg[] = "<br>".nl2br($height);
$msg[] = "<br>".nl2br($width);
$msg[] = "<br>".nl2br($v_bitrate);
$msg[] = "<br>".nl2br($a_bitrate);
$msg[] = "<br>".nl2br(shell_output($Cbucket->configs['ffmpegpath'].' -i '.$victimFile." -vcodec libx264 -acodec libfaac -s ".$width."x".$height." -preset ".$preset." -f mp4 -b:v ".$v_bitrate." -b:a ".$a_bitrate." -r 25 -ar 22050 ".TEMP_DIR."/".$t."121.mp4"));
$msg[] = "<div class=\"expOK\">Video file is convertable..</div>";
2013-10-07 12:17:06 +00:00
2014-09-24 14:28:10 +00:00
}
elseif (!$vidDetails)
{
//echo "here";
$t=time();
if ($preset == "" || $height == "" || $width == "" || $v_bitrate == "" || $a_bitrate == "")
{
$preset = 'medium';
$height = '640';
$width = '1280';
$v_bitrate = '720k';
$a_bitrate = '96k';
}
$msg[] = "<br>".nl2br($preset);
$msg[] = "<br>".nl2br($height);
$msg[] = "<br>".nl2br($width);
$msg[] = "<br>".nl2br($v_bitrate);
$msg[] = "<br>".nl2br($a_bitrate);
$msg[] = "<br>".nl2br(shell_output($Cbucket->configs['ffmpegpath'].' -i '.$victimFile." -vcodec libx264 -acodec libfaac -s ".$width."x".$height." -preset ".$preset." -f mp4 -b:v ".$v_bitrate." -b:a ".$a_bitrate." -r 25 -ar 22050 ".TEMP_DIR."/".$t."121.mp4"));
$msg[] = "<div class=\"expOK\">Video file is convertable..</div>";
}
else
{
$err[] = "<br>".nl2br(shell_output($Cbucket->configs['ffmpegpath'].' -i '.$victimFile.' 211.mp4'));
2013-10-07 12:17:06 +00:00
if(!file_exists($victimFile) && $victim)
$err[] = "<div class=\"expErr\">File does not exist</div>";
else
$err[] = "<div class=\"expErr\">What the...post the above ffmpeg log and let scientist do their job</div>";
theEnd();
}
theEnd('convertVideo1');
}
break;
case "convertVideo1":
{
$victimFile = $testVidsDir.'/'.$victim;
$victimOutput = $testVidsDir.'/output.flv';
$victimOutputHQ = $testVidsDir.'/output.mp4';
if(file_exists($victimOutput))
unlink($victimOutput);
if(file_exists($testVidsDir.'/output.log'))
unlink($testVidsDir.'/output.log');
$res169 = array();
$res169['240'] = array('427','240');
$res169['360'] = array('640','360');
$res169['480'] = array('853','480');
$res169['720'] = array('1280','1280');
$res169['1080'] = array('1920','1080');
$res43 = array();
$res43['240'] = array('320','240');
$res43['360'] = array('480','360');
$res43['480'] = array('640','480');
$res43['720'] = array('960','1280');
$res43['1080'] = array('1440','1080');
$configs = array
(
'use_video_rate' => true,
'use_video_bit_rate' => true,
'use_audio_rate' => true,
'use_audio_bit_rate' => true,
'use_audio_codec' => true,
'format' => 'flv',
'video_codec'=> config('video_codec'),
'audio_codec'=> config('audio_codec'),
'audio_rate'=> config("srate"),
'audio_bitrate'=> config("sbrate"),
'video_rate'=> config("vrate"),
'video_bitrate'=> config("vbrate"),
'normal_res' => config('normal_resolution'),
'high_res' => config('high_resolution'),
'max_video_duration' => config('max_video_duration'),
'res169' => $res169,
'res43' => $res43,
'resize'=>'max'
);
$ffmpeg = new ffmpeg($victimFile);
$ffmpeg->configs = $configs;
$ffmpeg->gen_thumbs = false;
$ffmpeg->gen_big_thumb = false;
$ffmpeg->num_of_thumbs = config('num_thumbs');
$ffmpeg->thumb_dim = config('thumb_width')."x".config('thumb_height');
$ffmpeg->big_thumb_dim = config('big_thumb_width')."x".config('big_thumb_height');
$ffmpeg->tmp_dir = TEMP_DIR;
$ffmpeg->input_ext = $ext;
$ffmpeg->output_file = $victimOutput;
$ffmpeg->hq_output_file = $victimOutputHQ;
$ffmpeg->log_file = $testVidsDir.'/output.log';
//$ffmpeg->remove_input = TRUE;
$ffmpeg->keep_original = config('keep_original');
$ffmpeg->original_output_path = ORIGINAL_DIR.'/'.$tmp_file.'.'.$ext;
$ffmpeg->set_conv_lock = false;
$ffmpeg->showpre=true;
$ffmpeg->ClipBucket();
$ffmpegpath = $Cbucket->configs['ffmpegpath'];
$ffmpegCommand = $ffmpeg->raw_command;
$msg[] = "FFMPEG Command So far<br><textarea class='code' onClick='$(this).select()'>$ffmpegCommand</textarea>";
//Lets start conversing videos
$converDetails = shell_output($ffmpegCommand);
$msg[] = "<br>".nl2br($ffmpeg->log);
$victimDetails = $ffmpeg->input_details;
$vidDetails = $ffmpeg->output_details;
if(!$vidDetails)
{
if($victimDetails['audio_codec']=='aac' || $victimDetails['audio_codec']=='ac3')
$err[] = "<div class=\"expErr\">A possible reason is beacuse videos with
AAC Audio does not encode without 'libfaac', set audio codec as libfaac and then try again</div>";
if(!file_exists($victimFile) && $victim)
$err[] = "<div class=\"expErr\">No output file...your ffmpeg is not compatible</div>";
else
$err[] = "<div class=\"expErr\">No output file...hmm post the log to dev team</div>";
if(@filesize($victimOutput)>0 && file_exists($victimFile))
$err[] = "<br>".nl2br(shell_output($Cbucket->configs['ffmpegpath'].' -i '.$victimOutput));
theEnd();
}else
{
$msg[] = "<br>".nl2br(shell_output($Cbucket->configs['ffmpegpath'].' -i '.$victimOutput));
$msg[] = "<div class=\"expOK\">Video file is converted =D..</div>";
}
theEnd();
}
}
}
function theEnd($status=false)
{
global $msg, $err;
if($err)
$errors = implode('',$err);
if($msg)
$messgs = implode('',$msg);
echo json_encode(array('err'=>$errors,'msg'=>$messgs,'status'=>$status));
exit();
}
?>