PHP에 다음 명령을 실행하는 비디오 업로드 스크립트가 있습니다.
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameIn.".mp4 ".$folder."/".$filenameOut.".flv 2>&1", $output);
결과 flv가 정확합니다.
하지만 mp4 출력으로 동일한 명령을 실행하면
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameIn.".mp4 ".$folder."/".$filenameOut.".mp4 2>&1", $output);
출력에는 0바이트가 있습니다.
나도 시도했다
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameIn.".mp4 -vcodec libx264 -crf 20 ".$folder."/".$filenameOut.".mp4");
그러나 출력 비디오에는 여전히 0바이트가 있습니다.
이유는 모르겠습니다. 도움이 필요하세요?
편집하다:
mp4에서 mkv로 변환하면 mkv가 제대로 작동합니다. 해당 mkv를 얻고 mp4로 다시 변환하면 최종 mp4는 0바이트입니다.
예를 들어:
exec("/usr/bin/ffmpeg -i ".$folder."/".$filename." ".$folder."/".$filenameOut.".mkv 2>&1", $output);
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameOut.".mkv ".$folder."/".$filename.".mp4 2>&1", $output);
이 경우 첫 번째 mp4에는 1210409바이트가 있고 결과 mkv에는 816018바이트가 있으며 마지막 mp4에는 0바이트가 있습니다. mp4 -> flv -> mp4도 마찬가지입니다.
답변1
PHP를 사용하여 실행하려는 소프트웨어에서 문제를 발견하면 명령을 실행하고 콘솔/터미널에서 직접 실행하고 모든 변수를 올바른 정보로 바꾸는 것을 잊지 마십시오. 이제 무슨 일이 일어나는지 관찰하고 오류를 수정할 수 없는 경우 로그를 복사하면 누군가가 도움을 줄 수 있습니다.
콘솔에서 무슨 일이 일어나고 있는지 확인하려면 ffmpeg
이 부분을 제거하는 것이 좋습니다 .2>&1", $output