我正在使用Laravel 4.2
。
我正在制作一个上传视频的项目。上传的视频应该在我使用php-ffmpeg
git-hub
包的大多数设备上播放。
要求是转码应该在后台完成。我正在使用WAMP 2.5
。
我在做什么,上传后我发了一个转码视频的asynchronous ajax request
,成功完成后,它应该在包含视频名称,路径等的数据库中插入一条记录。
问题是,如果我上传大尺寸视频,那么我将面临错误Maximum execution time of 120 seconds exceeded
。
我知道可能的解决方案是在max_timelimit
中设置php.ini
,但我不认为这是一个可行的解决方案,因为如果有更大的视频,则会再次出现相同的错误。
有什么技术可以在后台绕过这个转码过程吗?
我的代码如下:
try{
$video_id = Input::get('video_id');
$video_path = Input::get('video_path');
$path = '/video/'.date('Y').'/'.date('m');
$path .= '/';
$explode_filename = explode("/",$video_path);
$save_filename = $explode_filename[sizeof($explode_filename)-1];
$ffmpeg = FFMpeg\FFMpeg::create(array('timeout'=>0));
$video = $ffmpeg->open($video_path);
$format = new CustomVideo();
$format->setKiloBitrate(1000)
->setAudioChannels(2)
->setAudioKiloBitrate(256);
$video->save($format, public_path().$path.$save_filename);
//saving video
Video::where('id', '=', $video_id)->update(array('is_transcoded' => 1,'video_url'=>url($path.$save_filename)));
}
catch (Exception $ex){
return Response::json (["Message"=>$ex->getMessage(), "code"=>$ex->getCode(), "trace"=>$ex->getTrace()]);
}