ffmpeg는 크기가 0인 .mp4를 출력합니다.

ffmpeg는 크기가 0인 .mp4를 출력합니다.

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

관련 정보