音视频开发六:FFmpeg日志使用

常用日志级别

在 FFmpeg 中,errorwarninginfoverbosedebug 是指不同的日志级别,各自对应的是不同类型的日志信息。具体的解释如下:

  • error: 输出错误信息,表示程序出现了无法恢复的错误,需要立即停止执行。
  • warning: 输出警告信息,表示程序可能会出现错误,但不影响程序整体执行。
  • info: 输出一般信息,显示程序正在正常运行的信息,不过于详细。
  • verbose: 输出详细信息,用于调试和优化程序,可以帮助了解程序内部的运行情况。
  • debug: 输出调试信息,包含程序内部的详细运行信息,用于深度分析程序运行过程中出现的问题。

API

AV_LOG_SET_LEVEL

AV_LOG_SET_LEVEL 是 FFmpeg 中的一个宏定义,用于设置 FFmpeg 的日志级别。其语法为:

AV_LOG_SET_LEVEL(int level)

其中 level 是日志级别,它的取值范围从 0 到 47,对应的日志级别从 panic 到 trace。可以通过这个宏定义,动态地调整 FFmpeg 的日志级别,以便于调试和优化程序。

比如,下面的代码将 FFmpeg 的日志级别设置为 debug:

av_log_set_level(AV_LOG_DEBUG);

av_log 是 FFmpeg 中输出日志信息的函数,可以输出不同级别的日志信息。其函数原型如下:

av_log

void av_log(void *avcl, int level, const char *fmt, ...)
  • avcl:指向输出日志的上下文,可以是任意类型的指针,一般可以传入 NULL
  • level:表示输出日志的级别,可取的值有:AV_LOG_FATALAV_LOG_ERRORAV_LOG_WARNINGAV_LOG_INFOAV_LOG_VERBOSEAV_LOG_DEBUGAV_LOG_TRACE,级别逐渐递增,输出信息的详细度也逐渐递增。
  • fmt:输出的格式化字符串,类似于 printf 函数。
  • ...:可变参数列表,为输出字符串的变量,类似于 printf 函数。

使用 av_log 函数输出日志信息可以控制日志的级别和输出格式,可以在不同的情境下输出不同级别的日志信息,日志界别可以打印及其之上的信息,打印级别之下的信息。比方说设置error,error及之上的日志级别的信息都可以打印,error之下例如debug等的信息就不会打印。。

代码展示

展示日志使用


#include <libavutil/log.h>

int main() {
    
    

    av_log_set_level(AV_LOG_ERROR);
    av_log(NULL,AV_LOG_ERROR, "print string %s, print num %d", "hhhh", 3.1415926);
    av_log(NULL,AV_LOG_DEBUG, "print string %s, print num %d", "heihei", 1024);

	return 0;
}



只打印了一行日志

猜你喜欢

转载自blog.csdn.net/qq_38056514/article/details/130190749