Eu tenho um script de upload de vídeo em php em que execo o seguinte comando:
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameIn.".mp4 ".$folder."/".$filenameOut.".flv 2>&1", $output);
E o resultado flv está correto.
Mas quando executo o mesmo comando com saída mp4
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameIn.".mp4 ".$folder."/".$filenameOut.".mp4 2>&1", $output);
a saída tem 0 bytes.
Eu também tentei
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameIn.".mp4 -vcodec libx264 -crf 20 ".$folder."/".$filenameOut.".mp4");
mas o vídeo de saída ainda tem 0 bytes.
Eu não sei porque. Alguma ajuda?
EDITAR:
Se eu converter de mp4 para mkv, o mkv está bem.
Se eu pegar esse mkv e reconverter para o mp4, o mp4 final será 0 bytes.
Por exemplo:
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);
Neste caso, o primeiro mp4 tem 1210409 bytes, o mkv resultante tem 816018 bytes e o mp4 final tem 0 bytes. A mesma coisa com mp4 - > flv - > mp4.