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

関連情報