我想了解如何使用ColdFusion中的CFFILE標記來讀取文本文件的內容。就我而言,該文本文件是FFMpeg在轉碼媒體文件時生成的進度日誌。我想編寫一個ColdFusion腳本來定期輪詢進度日誌,直到日誌指出FFMpeg已完成其轉碼操作。然後在客戶端,我可以使用Ajax命中該ColdFusion腳本,並在FFMpeg執行其工作時向用戶顯示「完成百分比」。使用ColdFusion的CFFILE標記來監視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行是日誌文件中的最後一行。請注意,在最後一行的「進步=結束」:
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日誌文件,我想使用上面的新格式。任何人都可以幫忙嗎?
*使用CFFILE標籤只讀取文件的最後6行*爲了澄清,沒有一個CF文件標籤/函數真的支持只讀*文件的結尾。您必須閱讀整個文件,並向後循環。因此,彼得建議使用「尾巴」(這是專門爲此目的而設計的)外部程序。 – Leigh 2013-05-06 13:46:02