1

私はphpが得意ですが、ffmpegとexecスタッフには非常に慣れていません.ssh経由でffmpegを正常にインストールしました.ここでいくつかのスタックオーバーフローを参照し、いくつかの画像を使用してビデオを作成するコードを見つけました.

<?php

echo exec('ffmpeg -f image2 -i image%d.jpg video.mpg');

?>

同じフォルダーに image1.jpg と image2.jpg があります。この php コードを実行しましたが、何も起こりませんでした... video.mpg はどこに保存されますか? exec関数が正常に実行されたかどうかを確認する方法、またはデバッグする方法はありますか?どんな助けも大歓迎です。

4

1 に答える 1

3

正常に機能した場合、video.mpgは現在の作業ディレクトリに保存されています。必要に応じて、ファイル名を絶対パスに変更できます。

exec()関数が正常に実行されたかどうかを確認するには、3 番目の引数を渡して終了ステータスを取得します。

exec('ffmpeg -f image2 -i image%d.jpg video.mpg', $output, $exit_status);

成功した場合、値$exit_statusが得られるため、次のようになります。0

if ($exit_status === 0) {
    // ran fine
} else {
    // failed...
}

失敗している場合は、でエラーを取得したい場合があります$outputSTDERRこの方法でオリジナルをSTDOUT無視することができますSTDOUT:

exec('ffmpeg -f image2 -i image%d.jpg video.mpg 2>&1 >/dev/null', $output, $exit_status);

次に、ダンプ$outputして、何が得られたかを確認できSTDERRます。

if ($exit_status !== 0) {
    print implode("\n", $output);
}

video.mpgファイルが既に存在する場合、コマンドはスタックします。フラグを渡して-yffmpeg既存のファイルを上書きすることをお勧めします。

exec('ffmpeg -y -f image2 -i image%d.jpg video.mpg 2>&1 >/dev/null', $output, $exit_status);
于 2013-11-08T17:17:35.623 に答える