ffmpeg日志系统 av_log()是FFmpeg中输出日志的函数

修改自雷霄骅FFmpeg源代码简单分析:日志输出系统(av_log()等)

一般使用Error, Warning, Debug3个级别即可(见下面的颜色)。AV_LOG_QUIET
核心函数只有一个:av_log()。

一般情况下FFmpeg类库的源代码中是不允许使用printf()这种的函数的,所有的输出一律使用av_log()。
av_log()的声明位于libavutil\log.h
在这里插入图片描述

void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4);
	1.void *avcl		指定一个包含AVClass的结构体。
	2.int level			log的级别
	3.const char *fmt	和printf()一样
	4....在C语言中,在函数参数数量不确定的情况下使用“…”来代表参数
//av_log()和printf()的不同主要在于前面多了两个参数。
//其中第一个参数指定该log所属的结构体,例如AVFormatContext、AVCodecContext等等。
//第二个参数指定log的级别

int level
{
	#define AV_LOG_QUIET    -8	//不输出任何信息
	#define AV_LOG_PANIC     0
	#define AV_LOG_FATAL     8
	#define AV_LOG_ERROR    16
	#define AV_LOG_WARNING  24
	#define AV_LOG_INFO     32	//默认级别
	#define AV_LOG_VERBOSE  40
	#define AV_LOG_DEBUG    48
	//数值越小代表越严重
}
当前系统存在着一个“Log级别”。所有严重程度 ≥ 该级别的Log信息都会输出出来。
int av_log_get_level(void);{return av_log_level;}
int av_log_get_level(void);{av_log_level = level;}	//设置当前Log的级别。
以上两个函数主要操作了一个静态全局变量av_log_level。该变量用于存储当前系统Log的级别。它的定义如下所示。
static int av_log_level = AV_LOG_INFO;//默认级别


发布了81 篇原创文章 · 获赞 1 · 访问量 2931

猜你喜欢

转载自blog.csdn.net/qq_42024067/article/details/103665856