ffmpeg 学习笔记 日志的简单封装

1. ffmpeg 日志系统

ffmpeg libavutil 模块提供了日志功能,提供了日志等级,日志回调,日志打印等接口

main.cpp

#define __STDC_CONSTANT_MACROS

#pragma comment(lib, "avutil.lib")
#pragma comment(lib, "avcodec.lib")
#pragma comment(lib, "avdevice.lib")
#pragma comment(lib, "avfilter.lib")
#pragma comment(lib, "avformat.lib")
#pragma comment(lib, "swresample.lib")
#pragma comment(lib, "swscale.lib")

extern "C"{
    #include "libavutil/log.h"
    #include "zlog.h"
    #include <stdio.h>
}



// 日志
int log_test()
{
    av_log_set_level(AV_LOG_DEBUG);     // 设置日志级别
    //av_log_set_callback(log_callback);
    ZLOG_DEBUG("ffmpeg log test : %d", 111);
    ZLOG_INFO("ffmpeg log test : %d", 111);
    ZLOG_WARNING("ffmpeg log test : %d", 111);
    ZLOG_ERROR("ffmpeg log test : %d", 111);

    return 0;
}


int main(int argc, char* argv[])
{
    log_test();

    return 0;
}

zlog.h的封装,封装一下日志宏,添加一些常用的日志信息

#ifndef __ZLOG_H__
#define __ZLOG_H__

#include <time.h>
#ifdef __cplusplus             //告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的

extern "C"{

#endif
#include "libavutil/log.h"

inline const char* level_to_str(int level)
{
    if (level == AV_LOG_DEBUG)
        return "D";
    else if (level == AV_LOG_INFO)
        return "I";
    else if (level == AV_LOG_WARNING)
        return "W";
    else if (level == AV_LOG_ERROR)
        return "E";
    else
        return "U";
}

inline void zlog_format(int level, const char* file, int line, const char* format, ...)
{
    time_t loacl_time;
    char time_str[128];

    // 获取本地时间
    time(&loacl_time);
    tm t;
    localtime_s(&t, &loacl_time);
    strftime(time_str, sizeof(time_str), "%Y.%m.%d %X", &t);

    va_list ap;
    va_start(ap, format);
    char fmt_str[2048];
    vsnprintf_s(fmt_str, sizeof(fmt_str), format, ap);
    va_end(ap);
    
    av_log(NULL, level, "[%s] [%s] %s:%d %s\n", level_to_str(level), time_str, file, line, fmt_str);
}

#define ZLOG_DEBUG(format, ...) zlog_format(AV_LOG_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__);

#define ZLOG_INFO(format, ...) zlog_format(AV_LOG_INFO, __FILE__, __LINE__, format, ##__VA_ARGS__);

#define ZLOG_WARNING(format, ...) zlog_format(AV_LOG_WARNING, __FILE__, __LINE__, format, ##__VA_ARGS__);

#define ZLOG_ERROR(format, ...) zlog_format(AV_LOG_ERROR, __FILE__, __LINE__, format, ##__VA_ARGS__);

#ifdef __cplusplus
}
#endif
#endif

这里没有写日志文件,暂时只做学习用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值