Php FFMPEG请求超时

时间:2015-03-28 10:39:35

标签: php laravel ffmpeg

我正在使用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()]);
        }

0 个答案:

没有答案