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)
相关文章:
FFmpeg的日志系统(ubuntu 环境)
1. 新建.c文件 vim ffmpeg_log.c2. 输入文本 #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 A…...
浅析VO、DTO、DO、PO
一、概念介绍 POJO(plain ordinary java object) : 简单java对象,个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。一个POJO持久化以后就是PO,直接用它传递、传递…...
android kotlin基础复习 enum
1、kotlin中,关键字enum来定义枚举类型。枚举类型可以包含多个枚举常量,并且每个枚举常量可以有自己的属性和方法。 2、测试代码: enum class Color{RED,YELLOW,BLACK,GOLD,BLUE,GREEN,WHITE }inline fun <reified T : Enum<T>>…...
个股场外期权怎么交易?场外期权交易流程是怎样的?
今天带你了解个股场外期权怎么交易?场外期权交易流程是怎样的?个股场外期权是一种非标准化的期权合约,通常在场外市场(OTC市场)由金融机构和投资者之间进行交易。 场外个股期权主要功能 风险管理: 帮助投…...
企业选ETL还是ELT架构?
作为数据处理的重要工具,ETL工具被广泛使用,同时ETL也是数据仓库中的重要环节。本文将从解释ETL工具是怎么处理数据,同时介绍ELT和ETL工具在企业搭建数据仓库的重要优势。 一、什么是ETL? ETL是Extract-Transform-Load的缩写,将…...
【Spring Boot 3】【Web】同时启用 HTTP 和 HTTPS
【Spring Boot 3】【Web】同时启用 HTTP 和 HTTPS 背景介绍开发环境开发步骤及源码工程目录结构背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是…...
【Android】最好用的网络库:Retrofit
最好用的网络库:Retrofit 文章目录 最好用的网络库:RetrofitRetrofit的基本用法Retrofit的使用逻辑Retrofit的基本操作处理复杂的接口地址类型进阶删除提交header中指定参数 Retrofit构建器的最佳写法Retrofit的使用封装 用户网络请求的接口配置繁琐&…...
SpringBoot自动化配置原理
SpringBoot自动化配置原理 01-SpringBoot2高级-starter依赖管理机制 目的:通过依赖能了解SpringBoot管理了哪些starter 讲解: 通过依赖 spring-boot-dependencies 搜索 starter- 发现非常多的官方starter,并且已经帮助我们管理好了版本。 …...
2024级新生数组字符串专题题解
一、题解: 1.A-[NOIP2005]校门外的树_24级新生数组字符串训练题 (nowcoder.com) 这题常见的解法有两种: 第一种是这道题我们可以直接按照题目意思枚举 #include<bits/stdc.h> #define int long long using namespace std;int road[10010];sig…...
C++学习 虚函数,容器
一、虚函数 虚函数是C中的一种函数,允许子类重写父类中的函数,以便在运行时通过基类指针或引用调用子类的函数实现。虚函数的主要作用是实现多态性,这使得基类指针或引用可以根据实际指向的对象类型调用不同的函数实现。具体用法 虚函数的声…...
MacTalk 测评通义灵码,如何实现“微信表情”小功能?
作者:池建强,墨问西东创始人 前段时间,我写了篇墨问研发团队放弃 GitHub Copilot 的文章,没想到留言区一些读者推荐我们试试通义灵码,说它效果很不错。我呢,一直没腾出时间折腾。 直到月中时,…...
Canvas Confetti - 免费开源的五彩纸屑飞舞特效的 JS 库,多用于在网页上实现欢乐庆祝的场景
今天看科技周刊看到的一个酷炫的动效库,使用简单,视觉效果很好,推荐给大家。 Canvas Confetti 是一个基于 JavaScript 的特效动画库,可以在网页界面上轻松地实现五彩纸屑飞舞的庆祝场景特效。这个特效库封装了几种酷炫的特效&…...
[数据集][目标检测]智慧牧场猪只检测数据集VOC+YOLO格式16245张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):16245 标注数量(xml文件个数):16245 标注数量(txt文件个数):16245 标…...
GS-SLAM论文阅读笔记--LoopSplat
介绍 这篇文章看标题是解决GS-SLAM回环检测的,GS-SLAM回环检测之前文章很少,但他对于SLAM又很重要,确实值得阅读一番。而且这些作者的学校又是很厉害的。 文章目录 介绍1.背景介绍2.关键内容2.1 Gaussian Splatting SLAM2.2 Gaussian Splat…...
Mysql数据库表结构迁移PostgreSQL
1、背景: 公司本来用的数据库都是mysql,为了国产化适配兼容pg和dm。dm提供了数据迁移工具,可以直接做数据迁移,生成脚本之后在其他环境执行。但是pg貌似没有工具能直接用。navicat由于版权问题公司也用不了。pgloader使用总是有问…...
店匠科技携手Stripe共谋电商支付新篇章
在全球电商行业蓬勃发展的背景下,支付环节作为交易闭环的核心,其重要性日益凸显。随着消费者对支付体验要求的不断提高,以及跨境电商的迅猛发展,支付市场正经历着前所未有的变革与挑战。在这一充满机遇与竞争的领域,店匠科技(Shoplazza)凭借其创新的嵌入式支付解决方案—— Sho…...
大众(奥迪)汽车继电器编号对照表
数字功能放大器零件编号1化油器进气歧管加热器40a1719063832燃油泵(CE1 MK1 Golf 和 Early Rocco/cabrio K-Jet,无转速限制器)-443906059A 321906059D/E3燃油泵(CE1 MK1 Golf 和 Early Rocco/cabrio K-Jet,无转速限制器)-4439060594安全带警告继电器5早期 MFA 时钟的换档…...
《佛脚闪卡watch》——Apple Watch上的高效学习助手
在快节奏的生活环境中,时间管理成为了学习成功的关键因素之一。**《佛脚闪卡watch》**是一款专为Apple Watch设计的应用程序,旨在帮助学生和自学者更高效地利用碎片时间进行学习。无论是等待公交、散步还是短暂休息,您都可以随时随地进行复习…...
六、桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,旨在将抽象与实现分离,使得两者可以独立变化。通过使用桥接模式,可以避免在多个维度上进行继承,降低代码的复杂度,从而提高系统的可扩展性。 组成…...
Vue eslint 语法检测问题
1. 修改 prettier 配置文件 确保你的项目中有 .prettierrc 配置文件,并在其中添加或修改 endOfLine 设置为 lf,确保统一使用 LF 换行符。 在 .prettierrc 文件中添加: {"endOfLine": "lf" }2. 修改 .editorconfig 文件…...
2026地学最新调剂信息:北京师范大学、合肥工业大学、兰州大学、广州大学、宁波大学等
北京师范大学文理学院(珠海):原网址:https://fas.bnu.edu.cn/zsjy/yjszs/72ce767035ea4a4cbd8ba5607569af1f.htm合肥工业大学资源与环境工程学院调剂信息:原网址:https://geoscience.hfut.edu.cn/info/1042…...
别再盲目上协程!Python无锁并发成本决策树(含12个关键阈值参数与AWS/Azure实测TCO对比)
第一章:Python无锁并发的本质与GIL破局前提Python的“无锁并发”并非指完全绕过同步机制,而是指在特定场景下,通过原子操作、不可变数据结构或线程/进程隔离,避免显式使用 threading.Lock 等阻塞原语实现安全协作。其本质依赖于三…...
PSSE与IEEE数据格式互转实战:解决变压器参数异常的避坑指南
PSSE与IEEE数据格式互转实战:变压器参数异常分析与精准修正 电力系统仿真工程师在日常工作中经常面临不同软件平台间数据迁移的挑战。当您手头的IEEE标准潮流数据需要导入PSSE进行分析时,数据格式转换过程中的参数映射问题可能成为影响仿真精度的隐形杀…...
工程师的“避坑”指南:用LTspice优化你的Pt100测温电路,搞定非线性误差与噪声
工程师的“避坑”指南:用LTspice优化你的Pt100测温电路,搞定非线性误差与噪声 在工业测温领域,Pt100凭借其出色的稳定性和可重复性成为工程师的首选。但当你真正动手设计电路时,可能会发现理想很丰满,现实却很骨感——…...
TransCAD实战:从表格链接到矩阵OD与期望线的可视化全流程
1. 初识TransCAD:交通规划的数据魔术师 第一次打开TransCAD时,我被满屏的英文界面和专业术语吓得不轻。但当我真正用它完成第一个交通小区分析项目后,才发现这款软件简直是交通规划领域的"瑞士军刀"。简单来说,TransCAD…...
如何针对不同行业制定SEO策略方案
如何针对不同行业制定SEO策略方案 在当今数字化时代,搜索引擎优化(SEO)已经成为每个企业线上推广的核心策略之一。不同行业的SEO策略并非一成不变。制定有效的SEO方案,需要对各个行业的特点、用户行为以及竞争态势有深刻的理解。…...
OpenClaw知识管理:千问3.5-9B构建个人知识图谱
OpenClaw知识管理:千问3.5-9B构建个人知识图谱 1. 为什么需要AI驱动的知识管理 作为一个长期与信息过载搏斗的技术从业者,我书架上有37本未拆封的技术书籍,浏览器收藏夹里堆积着600个"稍后阅读"的网页,笔记软件中散落…...
OpenClaw多用户方案:gemma-3-12b-it支持家庭共享的权限隔离
OpenClaw多用户方案:gemma-3-12b-it支持家庭共享的权限隔离 1. 为什么需要家庭共享方案 上个月我遇到了一个典型家庭场景:孩子需要AI辅助完成课后作业,妻子想用自动化整理相册,而我希望用OpenClaw处理工作文档。如果每人单独部署…...
实战指南:在 CPU 上 200ms 内搜索 4000 万文档
实战指南:在 CPU 上 200ms 内搜索 4000 万文档:使用二进制嵌入和 Int8 重排序 摘要:这篇文章Search 40M documents in under 200ms介绍了一种在纯CPU环境下高效处理大规模语义搜索的技术方案。文章的技术亮点在于结合了二进制嵌入(…...
从标注到训练:手把手教你用Labelme制作YOLOv8-Pose可用的关键点数据集
从标注到训练:手把手教你用Labelme制作YOLOv8-Pose可用的关键点数据集 在计算机视觉领域,关键点检测技术正逐渐成为研究热点。无论是人体姿态估计、面部表情识别还是工业质检中的零件定位,准确的关键点检测都是实现这些应用的基础。然而&…...
