ColdFusion の CFFILE タグを使用してテキスト ファイルの内容を読み取る方法を知りたいです。私の場合、そのテキスト ファイルは、メディア ファイルのトランスコード中に FFMpeg によって生成される進行状況ログです。FFMpeg がトランスコーディング操作を終了したことをログが示すまで、進行状況ログを定期的にポーリングする ColdFusion スクリプトを作成したいと考えています。クライアント側では、Ajax を使用してその ColdFusion スクリプトを実行し、FFMpeg が作業を行っている間にユーザーに「完了率」を表示できます。
FFMpeg の最近のバージョンが現在サポートしている新しい「進行状況」フラグを使用してログ ファイルを生成するように FFMpeg を取得しました。以下に、このフラグの使用方法と、ログ ファイル内で生成された出力を示します。
FFMpeg コマンドは次のとおりです。
ffmpeg -i c:\my_original_file.ogg c:\my_converted_file.mp3 -progress c:\my_progress.txt
上記のコマンドにより、FFMpeg は my_progress.txt というログ ファイルを生成します。
ログファイルに生成されるものは次のとおりです。
total_size=206150
out_time_ms=51410044
out_time=00:00:51.410044
dup_frames=0
drop_frames=0
progress=continue
上記の 6 行は、ログ ファイルに繰り返し生成され、値が増加します。
total_size=206150
out_time_ms=51410044
out_time=00:00:51.410044
dup_frames=0
drop_frames=0
progress=continue
total_size=412413
out_time_ms=102975756
out_time=00:01:42.975756
dup_frames=0
drop_frames=0
progress=continue
total_size=618363
out_time_ms=154463111
out_time=00:02:34.463111
dup_frames=0
drop_frames=0
progress=continue
total_size=824939
out_time_ms=206107189
out_time=00:03:26.107189
dup_frames=0
drop_frames=0
progress=continue
最後に、ジョブが完了すると、6 行の最後のブロックがログ ファイルの最後のブロックになります。最後の行の「progress=end」に注意してください。
total_size=9725902
out_time_ms=2431348011
out_time=00:40:31.348011
dup_frames=0
drop_frames=0
progress=end
CFFILE タグを使用してファイルの最後の 6 行のみを読み取り(ファイルのサイズに関係なく)、Coldfusion スクリプトを作成し、Ajax 経由でブラウザーによってスクリプトが呼び出されるたびにこれを実行したいと考えています。最後に、これらの行の値を変数に解析して、呼び出し元にデータを返せるようにする必要があります。
私は FFMpeg のプログレス バーを調査しましたが、それらは PHP にあり、私には難しいです。さらに、FFMpeg のログ ファイルの古い形式のバージョンを解析し、上記の新しい形式を使用したいと考えています。誰でも助けてもらえますか?