ffmpeg中的日誌控制、保存日誌到指定文件、處理進度查詢
ffmpeg默認就會輸出一些日誌,包含編譯的工具(gcc版本)、可用的組件(–enable-xxxx)、組件版本號碼,如下圖
這些資訊是默認輸出的,每次執行合作都會列印在控制台中,如果不想看這些資訊,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
執行命令後,控制台輸出日誌如下
上面的命令,將影片壓縮成190×108解析度的影片,使用了-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
,執行後文件夾中出現了一個日誌文件
打開文件後,發現輸出的日誌與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文件,打開後如下
有了這些資訊,就可以了解當前處理的進度,可以做一些人性化的功能。