1

私は php に exec() を使用して ffmpeg にシェルするスクリプトを持っています - それは画像と mp3 から mp4 を作成します。

これは私が実行しているコマンドです:

"C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe" -loop 1 -r 0.1 -i image.jpg -i mp3.mp3 -c:v libx264 -preset ultrafast -crf 18 -tune stillimage -c:a copy -filter:v "[in] scale=-1:720, pad=1280:720:640-iw/2 [out]" -shortest out.mp4 -report

ほとんどの場合、問題なく動作し、約 5 秒かかってから終了します。ただし、100% の CPU を使用して ffmpeg.exe プロセスが「ハング」し、手動で「強制終了」されるまでそこにとどまることがあります。

ffmpeg.exe は何もしていないようです。作成した .mp4 は不完全で大きくなっていません。ログ ファイルは変更されておらず、すべてのファイルの変更時間も変更されていません。100% の CPU を使用している理由がわかりません。

同じ画像と mp3 を取得してもう一度実行すると、問題なく動作します。

スイッチを-reportオンにしましたが、ログ ファイルには、失敗して終了しなかった理由を示すものは何もないようです。以下はログ ファイルの最後の行 (934 行) です。何らかの理由でフレーム 10 の後に停止したようです。

[libx264 @ 0000000001E37D10] frame=   6 QP=18.00 NAL=2 Slice:P Poc:12  I:0    P:0    SKIP:3600 size=11 bytes
[libx264 @ 0000000001E37D10] frame=   7 QP=18.00 NAL=2 Slice:P Poc:14  I:0    P:0    SKIP:3600 size=11 bytes`
[libx264 @ 0000000001E37D10] frame=   8 QP=18.00 NAL=2 Slice:P Poc:16  I:0    P:0    SKIP:3600 size=11 bytes
[libx264 @ 0000000001E37D10] frame=   9 QP=18.00 NAL=2 Slice:P Poc:18  I:0    P:0    SKIP:3600 size=11 bytes
[libx264 @ 0000000001E37D10] frame=  10 QP=18.00 NAL=2 Slice:P Poc:20  I:0    P:0    SKIP:3600 size=11 bytes`

Process Explorerを使用してハングしたffmpeg.exeを調べてみましたが、バックグラウンドプロセスであるため、意味のあるものを見つけることができないようですが、ここに何かが欠けている可能性があります-バックグラウンドプロセスをフォアグラウンドに?

どんなアイデアでも大歓迎です:-)

4

0 に答える 0