ffmpeg # 利用loglevel控制打印日志的信息

cmdutil.c中:

int opt_loglevel(void *optctx, const char *opt, const char *arg)
{
    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   },
        { "trace"  , AV_LOG_TRACE   },
    };

...
}

對(duì)應(yīng)的宏的詳細(xì)說(shuō)明:

/**
 * @addtogroup lavu_log
 *
 * @{
 *
 * @defgroup lavu_log_constants Logging Constants
 *
 * @{
 */

/**
 * Print no output.
 */
#define AV_LOG_QUIET    -8

/**
 * Something went really wrong and we will crash now.
 */
#define AV_LOG_PANIC     0

/**
 * Something went wrong and recovery is not possible.
 * For example, no header was found for a format which depends
 * on headers or an illegal combination of parameters is used.
 */
#define AV_LOG_FATAL     8

/**
 * Something went wrong and cannot losslessly be recovered.
 * However, not all future data is affected.
 */
#define AV_LOG_ERROR    16

/**
 * Something somehow does not look correct. This may or may not
 * lead to problems. An example would be the use of '-vstrict -2'.
 */
#define AV_LOG_WARNING  24

/**
 * Standard information.
 */
#define AV_LOG_INFO     32

/**
 * Detailed information.
 */
#define AV_LOG_VERBOSE  40

/**
 * Stuff which is only useful for libav* developers.
 */
#define AV_LOG_DEBUG    48

/**
 * Extremely verbose debugging, useful for libav* development.
 */
#define AV_LOG_TRACE    56

從定義中可以看出來(lái),隨著嚴(yán)重程度逐漸下降,一共包含如下級(jí)別:
AV_LOG_PANIC,
AV_LOG_FATAL,
AV_LOG_ERROR,
AV_LOG_WARNING,
AV_LOG_INFO,
AV_LOG_VERBOSE,
AV_LOG_DEBUG。
每個(gè)級(jí)別定義的數(shù)值代表了嚴(yán)重程度,數(shù)值越小代表越嚴(yán)重。
默認(rèn)的級(jí)別是AV_LOG_INFO。
此外,還有一個(gè)級(jí)別不輸出任何信息,即AV_LOG_QUIET。

當(dāng)前系統(tǒng)存在著一個(gè)“Log級(jí)別”。
所有嚴(yán)重程度高于該級(jí)別的Log信息都會(huì)輸出出來(lái)。
例如當(dāng)前的Log級(jí)別是AV_LOG_WARNING,則會(huì)輸出AV_LOG_PANIC,AV_LOG_FATAL,AV_LOG_ERROR,AV_LOG_WARNING級(jí)別的信息,而不會(huì)輸出AV_LOG_INFO級(jí)別的信息。
可以通過(guò)av_log_get_level()獲得當(dāng)前Log的級(jí)別,通過(guò)另一個(gè)函數(shù)av_log_set_level()設(shè)置當(dāng)前的Log級(jí)別。

  • 命令行中 指定
ffmpeg -loglevel error -i sample.mp4 output.mkv
  • 代碼中寫(xiě)日志:
av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", errbuf);


...
int64_t seek_timestamp = timestamp;
...
av_log(NULL, AV_LOG_INFO, "seek_timestamp : %"PRId64"\n",seek_timestamp);

...
uint64_t total_packets = 0, total_size = 0;
...
av_log(NULL, AV_LOG_VERBOSE, "  Total: %"PRIu64" packets (%"PRIu64" bytes) demuxed\n",
               total_packets, total_size);

References:

https://blog.csdn.net/openswc/article/details/54694477
https://blog.csdn.net/leixiaohua1020/article/details/44243155

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • From:Python之日志處理(logging模塊) - 云游道士 - 博客園 https://www.cnbl...
    vigny的先生閱讀 2,796評(píng)論 3 5
  • 在應(yīng)用程序中添加日志記錄總的來(lái)說(shuō)基于三個(gè)目的:監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 5,153評(píng)論 0 6
  • 在應(yīng)用程序中添加日志記錄總的來(lái)說(shuō)基于三個(gè)目的:監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 5,214評(píng)論 1 13
  • 職業(yè)化,就是商業(yè)世界的教養(yǎng)。 無(wú)論生活還是工作 ,都要有分寸感 ,有教養(yǎng)。我們每個(gè)人都是獨(dú)一無(wú)二的 ,就像...
    素黑素黑閱讀 327評(píng)論 0 1
  • 國(guó)內(nèi)常用的素材網(wǎng)站,千圖網(wǎng),包圖網(wǎng),千庫(kù)網(wǎng),素材島,我圖網(wǎng)。一般的設(shè)計(jì)師都會(huì)在里面挑選素材進(jìn)行二次創(chuàng)作。但是唯一的...
    有創(chuàng)意的草圖君閱讀 25,562評(píng)論 4 37

友情鏈接更多精彩內(nèi)容