当前位置: 首页 > news >正文

FFmpeg的日志系统(ubuntu 环境)

1. 新建.c文件

vim ffmpeg_log.c

2. 输入文本

#include<stdio.h>
#include<libavutil/log.h>
int main()
{av_log_set_level(AV_LOG_DEBUG);av_log(NULL,AV_LOG_INFO,"hello world");return 0;
}

当log level < AV_LOG_DEBUG 都可以印出来

#define AV_LOG_ERROR    16/*** Something somehow does not look correct. This may or may not* lead to problems. An example would be the use of '-vstrict -2'.*/
#define AV_LOG_WARNING  24/*** Standard information.*/
#define AV_LOG_INFO     32/*** Detailed information.*/
#define AV_LOG_VERBOSE  40/*** Stuff which is only useful for libav* developers.*/
#define AV_LOG_DEBUG    48/*** Extremely verbose debugging, useful for libav* development.*/
#define AV_LOG_TRACE    56

av_log的实质上是snprintf:

void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl)
{static int print_prefix = 1;static int count;static char prev[LINE_SZ];AVBPrint part[4];char line[LINE_SZ];static int is_atty;int type[2];unsigned tint = 0;if (level >= 0) {tint = level & 0xff00;level &= 0xff;}if (level > av_log_level)return;ff_mutex_lock(&mutex);format_line(ptr, level, fmt, vl, part, &print_prefix, type);snprintf(line, sizeof(line), "%s%s%s%s", part[0].str, part[1].str, part[2].str, part[3].str);

3. 编译

gcc -g -o ffmpeg_log ffmpeg_log.c -lavutil

但会提示:

fmpeg_log.c:2:9: fatal error: libavutil/log.h: 没有那个文件或目录2 | #include<libavutil/log.h>|         ^~~~~~~~~~~~~~~~~
compilation terminated.

原因是gcc 找不到libavutil,需要在编译前告知编译器libavutil在哪里

export PKG_CONFIG_PATH="/home/ffmpeg/lib/pkgconfig"
pkg-config --libs --cflags libavutil

其中pkg-config 就是找libavutil具体位置,-I 是指定头文件,-L是指定库:

-I/home/ffmpeg/include -L/home/ffmpeg/lib -lavutil 

4. 修改gcc cmd

gcc -g -o ffmpeg_log ffmpeg_log.c -I/home/ffmpeg/include -L/home/ffmpeg/lib -lavutil

or

sudo gcc -g -o ffmpeg_log ffmpeg_log.c `pkg-config -cflags --libs  libavutil`

会生成ffmpeg_log文件,执行:

$ ./ffmpeg_log 
hello world

5. ldd 查看可执行文件所依赖的库

$ ldd ffmpeg_loglinux-vdso.so.1 (0x00007ffe051fc000)libavutil.so.59 => /home/ffmpeg/lib/libavutil.so.59 (0x00007a0937c00000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007a0937800000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007a0938dd4000)libdrm.so.2 => /lib/x86_64-linux-gnu/libdrm.so.2 (0x00007a0938dbd000)/lib64/ld-linux-x86-64.so.2 (0x00007a0938ed6000)
http://www.lryc.cn/news/431445.html

相关文章:

  • 浅析VO、DTO、DO、PO
  • android kotlin基础复习 enum
  • 个股场外期权怎么交易?场外期权交易流程是怎样的?
  • 企业选ETL还是ELT架构?
  • 【Spring Boot 3】【Web】同时启用 HTTP 和 HTTPS
  • 【Android】最好用的网络库:Retrofit
  • SpringBoot自动化配置原理
  • 2024级新生数组字符串专题题解
  • C++学习 虚函数,容器
  • MacTalk 测评通义灵码,如何实现“微信表情”小功能?
  • Canvas Confetti - 免费开源的五彩纸屑飞舞特效的 JS 库,多用于在网页上实现欢乐庆祝的场景
  • [数据集][目标检测]智慧牧场猪只检测数据集VOC+YOLO格式16245张1类别
  • GS-SLAM论文阅读笔记--LoopSplat
  • Mysql数据库表结构迁移PostgreSQL
  • 店匠科技携手Stripe共谋电商支付新篇章
  • 大众(奥迪)汽车继电器编号对照表
  • 《佛脚闪卡watch》——Apple Watch上的高效学习助手
  • 六、桥接模式
  • Vue eslint 语法检测问题
  • QT Creater实现国庆节主题项目【0基础完成版】
  • Qt 加载 WPS 时提示要登录
  • vue3的el-tree的default-checked-keys无法勾选的问题解决
  • class 5: vue.js 3 v-model和表单输入
  • 了解一下HTTP 与 HTTPS 的区别
  • Opencv中的直方图(1)计算反向投影直方图函数calcBackProject()的使用
  • VUE3项目的几种创建方式
  • VBA进行excel坐标转换
  • 使用pytorch深度学习框架搭建神经网络
  • Hive数据库与表操作全指南
  • UniaApp引入Iconfont