ffmpeg中的日誌控制、保存日誌到指定文件、處理進度查詢

ffmpeg默認就會輸出一些日誌,包含編譯的工具(gcc版本)、可用的組件(--enable-xxxx)、組件版本號碼,如下圖
log

這些信息是默認輸出的,每次執行合作都會打印在控制檯中,如果不想看這些信息,ffmpeg提供了-hide_banner選項,添加該選項後,即不會打印這些信息
而在執行日誌層面,ffmpeg日誌與通用日誌一致,也有級別的概念,可以使用-v選項來控制,設置級別時,可以使用英文單詞,也可以使用數字,具體的級別如下

debug 48

即debug級別的日誌,在ffmpeg中使用48來標記,該級別會打印全部的日誌,執行一個命令試試
ffmpeg -v debug -i 3.mp4 -vf scale=192x108 out.mp4 -y
該命令等效於
ffmpeg -v 48 -i 3.mp4 -vf scale=192x108 out.mp4 -y
執行命令後,控制檯輸出日誌如下
debug_log
上面的命令,將視頻壓縮成190x108分辨率的視頻,使用了-vf選項,可以看到紅框中的信息,將命令執行時的步驟很詳細的打印了出來。

verbose 40

比debug日誌簡略一些,上面的命令同樣再執行一次,上圖紅框中的信息就不再打印了

info 32

與verbose相似,顯示的日誌會稍微少些,這也是ffmpeg默認使用的日誌級別

warning 24

只顯示warning或更嚴重的日誌

error 16

只顯示錯誤或更嚴重的日誌

fatal 8

只顯示致命錯誤,一般出現這些錯誤,程序會退出

panic 0

只顯示程序崩潰的日誌,這種一般是ffmpeg內部的錯誤了,一般二般情況下應該都不會遇到的

quiet -8

什麼也不顯示,包括錯誤信息,生產環境通常並不會這麼做,除非你瘋了🤣
以上是控制日誌打印級別,有時需要將日誌保存下來,以備出現問題時定位問題,這時可以使用- report命令,將日誌保存到文件中,執行命令ffmpeg -report -i 3.mp4 -vf scale=192x108 out.mp4 -y,執行後文件夾中出現了一個日誌文件
report_log
打開文件後,發現輸出的日誌與verbose級別一致。
但是這種方式文件名是ffmpeg根據時間默認生成的,如果要指定文件名可以嗎?答案當然是肯定的,執行命令
FFREPORT=file=ffreport.log:level=32 ffmpeg -i 3.mp4 -vf scale=192x108 out.mp4 -y
成功執行後,會發現文件夾下多了一個名爲ffreport.log的文件,即指定生成的日誌文件

監控處理進度

有時可能會想知道當前處理的進度,這時可以使用-progress選項,執行命令如下
ffmpeg -progress pro.log -i big_buck_bunny.mp4 -vf scale=192x108 out.mp4 -y
成功執行後,會有一個pro.log文件,打開後如下
progress_log
有了這些信息,就可以瞭解當前處理的進度,可以做一些人性化的功能。

有問題可以留言溝通,歡迎轉載,轉載請註明出處

博客地址暖寶寶官方認證鏟屎官

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章