FFmpegのコマンド 5 | ストックオーディオコンバーター

プログレス

変換の進行状況を、別途ファイルにする場合、-progressの後に出力ファイルを指定します。

ffmpeg -progress prog.txt -i town.flac town.mp3

以下のように、変換の進行情報が、約1秒毎に書き出されます。

FFmpegの進行度

ログレベル

FFmpegのログは、標準出力ではなく標準エラー出力に書き出されるため、それをエラー情報のみ出力するには、-loglevelで指定します。

ffmpeg -loglevel error -i town.flac town.mp3

このオプションは指示された値で、ログ情報の出力を制御するので、ここではerrorを指定してます。

バックグラウンド処理

PHPでFFmpegをバックグランドで処理するには、

ffmpeg -i town.flac town.mp3  </dev/null >/dev/null 2>/dev/null &

/dev/nullはデータの破棄を指示し、その手前の、<>2>、はそれぞれ、標準入力、標準出力、標準エラー出力を意味します。</dev/nullで、変換時のコマンド入力待ちを制御し、>/dev/null2>/dev/nullで、それぞれの出力を破棄して、最後に、末尾に&を付けてバックグラウンド処理を明示します。
FFmpegのログは、前述のように標準エラー出力に書き出されるので、それをファイルに、ここではerror.logに書き出すとすると、

ffmpeg -i town.flac town.mp3  </dev/null >/dev/null 2>error.log &

以上は、主に公式のwikiを参考にしました。

これに加えて、コマンド実行したタスクのプロセスIDを取得したかったので、末尾に、echo $!を付けます。

ffmpeg -i town.flac town.mp3  </dev/null >/dev/null 2>error.log & echo $!

PHPはコマンド実行の関数が数種類ありますが、このecho $!で出力されるプロセスIDを取得するのに、サイトの方ではexec()を用いました。上記のコマンドを$commandと置くと、

exec($command,$processID);

第2引数の形式は配列であり、コマンド実行の出力が1行毎に格納されますが、ここではプロセスIDのみ出力されるので、$processID[0]として、これを取り出します。

URL: sac.ringil-music.com
環境: さくらのVPS・Centos7・Nginx・PHP-FPM

コメントを残す

メールアドレスが公開されることはありません。