一、ffmpeg的日志系统,个人感觉主要好在以下几个方面:
1.有颜色输出
2.标志输出的日志信息属于哪一个模块
3.输出信息的日志等级可控。也就是说通过控制,输出的日志信息内容会不同
二、 简单分析ffmpeg日志系统的处理机制:
2.1、 例如,当命令是-loglevel trace时,ffmpeg内部是怎样处理的?
av_log(avctx, AV_LOG_VERBOSE, “Codec not supported\n”);执行这一行代码,内部发生什么?
int main(int argc, char **argv)
{
.....
/*与重复信息的处理有关*/
av_log_set_flags(AV_LOG_SKIP_REPEATED);
/*解析设置loglevel的命令*/
parse_loglevel(argc, argv, options);
.....
}
void parse_loglevel(int argc, char **argv, const OptionDef *options)
{
/*查找匹配命令
*命令会在数组const OptionDef options[] 查找----ffmpeg_opt.c
*/
int idx = locate_option(argc, argv, options, "loglevel");
const char *env;
check_options(options);
if (!idx)
idx = locate_option(argc, argv, options, "v");
/*设置loglevel命令*/
if (idx && argv[idx + 1])
opt_logl