ffmpeg 및 php를 사용하여 큰 (40MB) mov 파일을 mp4로 변환하려고합니다.대용량 파일의 경우 shell_exec 시간 초과를 사용하는 FFMPEG 변환
하지만 서버에서 504 시간 초과 오류가 발생합니다. 변경하지 않고도이 문제를 해결할 수 있습니까? set_time_limit
?
여기 내 PHP 코드입니다.
shell_exec($this->getFFmpegPath() . ' -i ' . $path . ' -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -preset slower -crf 18 -vf "scale=trunc(in_w/2)*2:trunc(in_h/2)*2" ' . $convertedPath . '.mp4');
그래서 시간 초과없이 변환하는 방법에 대한 아이디어가 있으십니까? 어떤 도움을 많이 주시면 감사하겠습니다.
폴 감사합니다, 나는 약간의 조사를했고 내가 백그라운드에서 프로세스를 실행할 수 있지만 지금은 백그라운드 프로세스의 상태를 알아야한다는 것을 알아 냈습니다. –
나는 나 자신과 비슷한 것을 시도하지 않았기 때문에 어떤 이슈를 실행할 지 모른다. 연결된 질문은 PID를 저장하도록 제안합니다. 여러 parralel 사용자가있을 수 있으므로 세션에 저장하는 것이 좋은 옵션 일 수 있습니다. 그런 다음 상태를 보여주는 페이지를 원합니다. 프로세스가 여전히 실행 중인지 확인하려면이 응답에서 제안하는대로 if (file_exists ("/ proc/$ pid")) {'를 사용할 수 있습니다. http://stackoverflow.com/a/9874592/2799887 –
백그라운드 프로세스로 변환하면 더 이상 stdout 및 stderr에 액세스 할 수 없게됩니다 (또한 진행 정보를 결정할 능력도 없습니다). 따라서 stdout과 stderr을'$ tempdir/$ pid.stdout.log'와'$ tempdir/$ pid.stderr.log' 또는 이와 비슷한 것으로 작성하는 것이 좋습니다. –