題 如何使ffmpeg更安靜/更簡潔?


默認情況下,ffmpeg向stderr發送一個完整的lotta消息:構建時,如何構建,編解碼器等等等。

我怎樣才能讓它更安靜?

我試過了 -v 0 (和 -v 10 因為文件只是靦腆地說 Set the logging verbosity level. 沒有指示輸入範圍是什麼) - 仍然不安靜。

我試過了 -loglevel quiet  - 還是不安靜

我應該提一下,我正在尋找“更安靜”,而不是“沒有輸出”。如果有錯誤我想看到它,但我不需要每次都聽到ffmpeg的配置。單。時間。


84
2017-08-22 21:59


起源


對於開發人員來說,ffmpeg肯定是開發人員的一種程序。 - digitxp


答案:


我還沒有測試過,但我在手冊頁中看到了一個選項:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

應該這樣做,理論上只記錄嚴重的錯誤


82
2018-01-12 00:59



即使 -loglevel panic,對我而言,它只是減少輸出 - 它仍然打印版本信息,流映射,配置選項,(甚至進度信息!)....任何想法?我可能不得不提到它是來自最新svn trunk的自編譯版本。 - codeling
將它傳遞給位桶:> / dev / null 2>&1 - rogerdpack
@rogerdpack適用於大多數程序,但是ffmpeg將其所有文本輸出放到stderr而不是stdout(這樣做可以將編碼器輸出傳遞給其他程序),因此將stdout重定向到/ dev / null wouldn'做任何有用的事情。 - evilsoup
運用 -hide_banner 除了降低冗長程度之外,這將是一個很好的妥協。 - Makaveli84
除了已經說過的所有內容之外,-nostats還會禁用進度輸出。 - Ely


這裡有來自源代碼的日誌級別(FFmpeg版本0.10.2.git)

const struct { const char *name; int level; } log_levels[] = {
        { "quiet"  , AV_LOG_QUIET   },
        { "panic"  , AV_LOG_PANIC   },
        { "fatal"  , AV_LOG_FATAL   },
        { "error"  , AV_LOG_ERROR   },
        { "warning", AV_LOG_WARNING },
        { "info"   , AV_LOG_INFO    },
        { "verbose", AV_LOG_VERBOSE },
        { "debug"  , AV_LOG_DEBUG   },
    };

47
2018-06-18 11:54



雖然URL往往會隨著時間的推移而發生變化,但最好將它們作為答案來源。例如,目前記錄在此處 ffmpeg.org/ffmpeg.html#toc-Generic-options 即使此URL發生變化,讀者也會知道在哪裡查看文檔。 - Fr0zenFyr


ffmpeg -hide_banner -loglevel panic

在當前答案下方的評論中提到了這一點。

選項 -hide_banner 於2013年底推出 - https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-December/152349.html )


37
2018-02-24 19:37



這應該是公認的答案 - NineCattoRules
最好的答案,但選項-show-banner比隱藏它更好 - hetepeperfan
也許加 -nostats呢? - Mikko Rantalainen


我成功使用了以下內容(撰寫本文時最新的FFMPEG版本):

-nostats -loglevel 0

然後在我的使用場景中絕對安靜。


14
2017-08-12 06:41



對ffmpeg 3.2中的這個解決方案感到滿意 - Bernhard Döbler


ffmpeg -loglevel error [other commands]

這會隱藏橫幅並僅顯示錯誤。使用 -loglevel warning 如果你想看到警告。

在Ffmpeg 3.0.2中測試過。

來自 文件

-loglevel [repeat +] loglevel | -v [repeat +] loglevel

設置庫使用的日誌記錄級別。添加“重複+”表示   重複的日誌輸出不應該壓縮到第一行   並且將省略“重複n次的最後消息”行。 “重複”   也可以單獨使用。如果單獨使用“重複”,並且沒有事先   loglevel set,將使用默認的loglevel。如果有多個loglevel   給出參數,使用'repeat'不會改變loglevel。   loglevel是一個字符串或包含其中一個的數字   以下值:

'安靜,-8'

什麼都不顯示;安靜。

'恐慌,0'

僅顯示可能導致進程崩潰的致命錯誤,例如   並斷言失敗。目前還沒有用於任何目的。

'致命,8'

只顯示致命錯誤。這些是過程之後的錯誤   絕對不能繼續。

'錯誤,16'

顯示所有錯誤,包括可以從中恢復的錯誤。

'警告,24'

顯示所有警告和錯誤。任何與可能相關的消息   將顯示不正確或意外的事件。

'info,32'

在處理過程中顯示信息性消息。這是另外的   警告和錯誤。這是默認值。

'詳細,40'

與...一樣 info,除了更詳細。

'debug,48'

顯示所有內容,包括調試信息。

'追踪,56'

默認情況下,程序會記錄到stderr,如果支持著色   終端,顏色用於標記錯誤和警告。記錄著色   可以禁用設置環境變量    AV_LOG_FORCE_NOCOLOR要么 NO_COLOR,或者可以強制設置   環境變量 AV_LOG_FORCE_COLOR。使用環境   變量 NO_COLOR 已棄用,將在以下內容中刪除   FFmpeg版本。


13
2017-07-09 17:25





你可以通過grep管道stderr。例如,如果要刪除配置信息,可以這樣做:

% ffmpeg -i infile.avi -s 640x480 outfile.avi >/dev/null 2>&1 | grep -v configuration:

1
2018-04-17 14:00



我相信可能需要 ffmpeg … 2>&1 >/dev/null | grep …。 - Scott


以下在macOS上為我工作:

ffmpeg -v quiet

或者只看到進展:

ffmpeg -v quiet -stats

0
2017-10-04 16:04





這是一個有點便宜,但附加 >/dev/null 2>&1 是一種在shell中保持ffmpeg靜音的可靠方法。

ffmpeg -f x11grab -y -r 24 -s 800x600 -i :0.0+1366,100 -f oss -i /dev/dsp3 -sameq ./out.avi >/dev/null 2>&1

有關bash輸出的更多信息


-1
2017-08-23 05:08



除了ffmpeg比你領先一步,並輸出配置信息和 實際 對stderr的錯誤。 - blahdiblah