我是靠谱客的博主 义气面包,最近开发中收集的这篇文章主要介绍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 %sn", 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

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

最后

以上就是义气面包为你收集整理的ffmpeg 学习笔记 日志的简单封装的全部内容,希望文章能够帮你解决ffmpeg 学习笔记 日志的简单封装所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部