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.mzph.cn/bicheng/53385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【重学 MySQL】十二、SQL 语言的规则与规范

【重学 MySQL】十二、SQL 语言的规则与规范 基本规则注释语法规则命名规则基本命名规则具体命名规范其他注意事项 数据导入指令 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;的规则与规范是确保SQL语句能够正确执行、提高代码可读性和可维…

【2024数模国赛赛题思路公开】国赛C题第三套思路丨无偿自提

C题参考思路 C题是一道优化问题&#xff0c;目的是根据题目所给的种植限制条件以及附件数据建立目标条件优化模型&#xff0c;优化种植策略&#xff0c;有利于方便田间管理&#xff0c;提高生产效益&#xff0c;减少各种不确定因素可能造成的种植风险。整个题目最重要的问题在…

Java框架第四课(对Spring的补充Spring web)

目录 一.Spring web的认识 (1)Spring Web概念 (2)Spring web的特点 (3)Springweb运行的流程 (4)Springweb运行的流程图 二.搭建Spring web 三.自定义处理器类搭建 (1)处理器类配置 (2)处理器类接受请求 (3)获得请求数据 四.拦截器 (1)关于拦截器&#xff1a; (2)拦截器的…

13、Flink SQL 的 时间属性 介绍

时间属性 a)概述 Flink 可以基于几种不同的 时间 概念来处理数据。 处理时间 指的是执行具体操作时的机器时间(例如 Java的 System.currentTimeMillis()) )事件时间 指的是数据本身携带的时间,这个时间是在事件产生时的时间。摄入时间 指的是数据进入 Flink 的时间;在系…

Axure中继器动态数据图表制作

在Axure RP中&#xff0c;中继器&#xff08;Repeater&#xff09;是一个非常强大的工具&#xff0c;它允许设计者动态地展示和交互数据&#xff0c;进而创建各种复杂的数据可视化图表&#xff0c;如柱状图、条形图、堆叠图、散点图和对比图。以下将详细介绍如何使用中继器来设…

【TS高频面试题】interface与type的区别

参考文章 一、基本概念 1. type&#xff08;类型别名&#xff09; 用来给一个类型起新名字&#xff0c;使用 type 创建类型别名。 2. interface&#xff08;接口&#xff09; 专门用于定义对象的结构&#xff08;比如属性和方法&#xff09; 二、相同点 &#xff08;1&a…

持续集成与持续部署(CI/CD)的深入探讨

在现代软件开发中&#xff0c;持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;已成为不可或缺的实践。这些方法旨在加快软件交付的速度&#xff0c;同时提高软件的质量和稳定性。通过CI/CD&#xff0c;开发团队可以频繁地将代码更改集成到主分支&…

调用火山云的语音生成TTS和语音识别STT

首先需要去火山云的控制台开通TTS和STT服务语音技术 (volcengine.com) 火山这里都提供了免费的额度可以使用 我这里是使用了java来调用API 目前我还了解到阿里的开源项目SenseVoice&#xff08;STT&#xff09;和CosyVoice(TTS)非常的不错&#xff0c;但是都是使用Python开发…

prometheus删除指定metrics下收集的值

Prometheus 删除指定 Metric 官方文档&#xff1a; ​ - https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis Prometheus 的管理 API 接口&#xff0c;官方到现在一共提供了三个接口&#xff0c;对应的分别是快照功能、数据删除功能、数据清理功能…

js 创建 React 项目

起因(目的): js 很久没写了。 react js 之前粗略看过, 最近又需要用到, 继续学习&#xff0c; 记录 积累。 1. 新建 React 项目 的几种方法。 官方建议使用 next 来创建 React 项目&#xff0c; 但是我觉得太复杂了。以后再看看. npx create-next-applatest # !!! 不建议使…

算法练习题14——leetcode84柱形图中最大的矩形(单调栈)

题目描述&#xff1a; 解题思路&#xff1a; 要解决这个问题&#xff0c;我们需要找到每个柱子可以扩展的最大左右边界&#xff0c;然后计算以每个柱子为高度的最大矩形面积。 具体步骤如下&#xff1a; 计算每个柱子左侧最近的比当前柱子矮的位置&#xff1a; 使用一个单调…

java后端保存的本地图片通过ip+端口直接访问

直接上代码吧 package com.ydx.emms.datapro.controller;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.…

Qt中Q_PROPERTY的作用,以及必要性和使用场景

作为一个跨平台框架&#xff0c;Qt没有依赖那些非标准的编译器特性&#xff0c;比如&#xff1a;__property或者[property]。Qt的解决方案适用于Qt支持平台下的任何标准C编译器。它基于元对象系统&#xff08;Meta Object Sytstem&#xff09;&#xff0c;该系统还提供了信号槽…

linux curl命令介绍以及使用

文章目录 curl 简介curl 的安装基本用法发送GET请求将响应内容保存到文件显示请求的头部信息发送POST请求上传文件携带请求头处理重定向通过代理发送请求下载文件指定请求的超时时间 高级用法模拟浏览器行为保持会话&#xff08;Cookie&#xff09;验证HTTPS请求总结 在Linux中…

函数式接口实现策略模式

函数式接口实现策略模式 1.案例背景 我们在日常开发中&#xff0c;大多会写if、else if、else 这样的代码&#xff0c;但条件太多时&#xff0c;往往嵌套无数层if else,阅读性很差&#xff0c;比如如下案例&#xff0c;统计学生的数学课程的成绩&#xff1a; 90-100分&#…

idea添加本地环境执行模版

用Flink的环境执行时&#xff0c;因为最后会打包放服务器&#xff0c;所以有些jar包将不会打包上传&#xff0c;这些jar包用<scope>provided</scope>标记 所以这些jar包在本地运行时也会不提供&#xff0c;为了程序在本地能跑&#xff0c;我们每次执行是需手动添加…

使用matlab的热门问题

MATLAB广泛应用于科学计算、数据分析、信号处理、图像处理、机器学习等多个领域&#xff0c;因此热门问题也涵盖了这些方面。以下是一些可能被认为当前最热门的MATLAB问题&#xff1a; 深度学习与神经网络&#xff1a; 如何使用MATLAB的深度学习工具箱&#xff08;Deep Learni…

vue3 el-menu 菜单Maximum recursive updates exceeded 报错

vue3 用el-menu实现管理后台左侧菜单&#xff0c;报Uncaught (in promise) Maximum recursive updates exceeded in component <ElMenu>. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possib…

Monorepo学习笔记

Monorepo学习笔记 使用 pnpm 配置 monorepo 1、创建项目 mkdir stars-ui && cd stars-ui && pnpm init mkdir packages docs2、.gitignore # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log*node_modules…

自然语言处理系列五十》文本分类算法》SVM支持向量机算法原理

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列五十SVM支持向量机》算法原理SVM支持向量机》代…