常用日志级别
在 FFmpeg 中,error
、warning
、info
、verbose
和 debug
是指不同的日志级别,各自对应的是不同类型的日志信息。具体的解释如下:
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_FATAL
、AV_LOG_ERROR
、AV_LOG_WARNING
、AV_LOG_INFO
、AV_LOG_VERBOSE
、AV_LOG_DEBUG
和AV_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;
}
只打印了一行日志