ffmpeg编译时保留调试信息

ffmpeg解码视频并将原始数据转换为PPM格式进行保存 大致流程: 注册所有编解码器与解复用器(可省略) 初始化媒体上下文结构体 打开视频文件——avformat_open_input函数功能很强大,读取文件并给AVFormatContext赋值 再检索流信息,使用avformat_find_stream_info来更新媒体上下文信息(下图为打印媒体信息,分别在调用avformat_find_stream_info的前后,数据上会有不同) 找到视频流并用其流所对应的编解码器信息来初始化编解码器上下文 用编解码上下文中的编解码器ID来查找编解码器 . 阅读详情

./configure                              \

--enable-debug=3                 \

--disable-optimizations       \

--disable-asm                       \

--disable-stripping               \

... ... (其它设置)

 

configure以后再看看生成的config.mak中-g前面的设置,如果是-O3,可以修改成-O1 或直接去掉(记得以前去掉-O选项编译不通过,不知怎么回事,可能什么地方设置不正确,反正现在是可以了)

 

看看gcc手册中是怎么说的

 

优化选项

-O -O1
Optimize. Optimizing compilation takes somewhat more time, and a lot more memory for a large function.

With -O, the compiler tries to reduce code size and execution time, without performing any optimizations that take a great deal of compilation time.

-O turns on the following optimization flags:  (打开优化开关)

          -fauto-inc-dec 
          -fcompare-elim 
          -fcprop-registers 
          -fdce 
          -fdefer-pop 
          -fdelayed-branch 
          -fdse 
          -fguess-branch-probability 
          -fif-conversion2 
          -fif-conversion 
          -fipa-pure-const 
          -fipa-profile 
          -fipa-reference 
          -fmerge-constants
          -fsplit-wide-types 
          -ftree-bit-ccp 
          -ftree-builtin-call-dce 
          -ftree-ccp 
          -ftree-ch 
          -ftree-copyrename 
          -ftree-dce 
          -ftree-dominator-opts 
          -ftree-dse 
          -ftree-forwprop 
          -ftree-fre 
          -ftree-phiprop 
          -ftree-sra 
          -ftree-pta 
          -ftree-ter 
          -funit-at-a-time
     

-O also turns on -fomit-frame-pointer on machines where doing so does not interfere with debugging.

-O2
Optimize even more. GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff. As compared to-O, this option increases both compilation time and the performance of the generated code.

-O2 turns on all optimization flags specified by-O. It also turns on the following optimization flags:

          -fthread-jumps 
          -falign-functions  -falign-jumps 
          -falign-loops  -falign-labels 
          -fcaller-saves 
          -fcrossjumping 
          -fcse-follow-jumps  -fcse-skip-blocks 
          -fdelete-null-pointer-checks 
          -fdevirtualize 
          -fexpensive-optimizations 
          -fgcse  -fgcse-lm  
          -finline-small-functions 
          -findirect-inlining 
          -fipa-sra 
          -foptimize-sibling-calls 
          -fpartial-inlining 
          -fpeephole2 
          -fregmove 
          -freorder-blocks  -freorder-functions 
          -frerun-cse-after-loop  
          -fsched-interblock  -fsched-spec 
          -fschedule-insns  -fschedule-insns2 
          -fstrict-aliasing -fstrict-overflow 
          -ftree-switch-conversion -ftree-tail-merge 
          -ftree-pre 
          -ftree-vrp
     

Please note the warning under -fgcse about invoking-O2 on programs that use computed gotos.

-O3
Optimize yet more. -O3 turns on all optimizations specified by-O2 and also turns on the-finline-functions,-funswitch-loops,-fpredictive-commoning,-fgcse-after-reload,-ftree-vectorize and-fipa-cp-clone options.
-O0
Reduce compilation time and make debugging produce the expected results. This is the default.
-Os
Optimize for size. -Os enables all-O2 optimizations that do not typically increase code size. It also performs further optimizations designed to reduce code size.

-Os disables the following optimization flags:

          -falign-functions  -falign-jumps  -falign-loops 
          -falign-labels  -freorder-blocks  -freorder-blocks-and-partition 
          -fprefetch-loop-arrays  -ftree-vect-loop-version
     

-Ofast
Disregard strict standards compliance. -Ofast enables all-O3 optimizations. It also enables optimizations that are not valid for all standard compliant programs. It turns on-ffast-math and the Fortran-specific-fno-protect-parens and -fstack-arrays.

If you use multiple -O options, with or without level numbers, the last such option is the one that is effective.

-O后面数字越小优化程度越低

 

产生调试信息的选项

-glevel

 

Request debugging information and also use level to specify how much information.The default level is 2.

Level 0 produces no debug information at all. Thus, -g0 negates-g.

Level 1 produces minimal information, enough for making backtraces in parts of the program that you don't plan to debug. This includes descriptions of functions and external variables, but no information about local variables and no line numbers.

Level 3 includes extra information, such as all the macro definitions present in the program. Some debuggers support macro expansion when you use-g3.

 

1 FFmpeg从入门到精通-FFmpeg简介 1.FFmpeg简介 1.1 FFmpeg的定义 1.2 FFmpeg的历史 1.3 FFmpeg的基本组成 1.4 FFmpeg的编解码工具ffmpeg 1.5 FFmpeg的播放器ffplay 1.6 FFmpeg的多媒体分析器ffprobe 1.7 FFmpeg编译(1)FFmpeg之Windows平台编译(2)FFmpeg之Linux平台编译(3)FFmpeg之OS X平台编译 1.8 FFmpeg编码支持与定制(1)FFmpeg的编码器支持(2)FFmpe 阅读详情

相关推荐

FFmpeg生成Android so库

Mac编译第一次接入FFmpeg,搞了整整一天,生成so库,可谓一波三折,功夫不负有心人有心人,终于搞定了。网上很多方案都是基于ndk14之前生成的,最新版本的ndk21和最新版本的FFmpeg4.3.1用不了,错误很大,搞了好一阵子发现在Linux系统中一直报错,刚刚开始以为c编译器没有,于是安装了,yum install yasm和nasm但是还是报错,然后把ndk换成ndk14才可以编译了,但是问题又来了,虽然编译成功了但是没有生成so库文件内容。

qq_52703909的博客 1167

关于ffmpeg编码后的清理

先给出示例代码;  void video_encode_example(const char *filename, int codec_id) {     AVCodec *codec;     AVCodecContext *c= NULL;     int i, ret, x, y, got_output;     FILE *f;     AVFrame *frame;  

chinabinlang的专栏 5226

linux-ffmpeg4.3-build-不带调试信息.zip

编译 ffmpeg 4.3 源码结果, 环境linux 对应的博客文章为:《【FFmpeg编程进阶】(四)编译FFmpeg》 https://blog.youkuaiyun.com/Ciellee/article/details/108737155

ffmpeg编译debug版本调试

当你看这里的时候,相比你一定非常恼火,明明加了–enable-debug,但是为什么还是编译不出debug的ffmpeg.

weixin_43360707的博客 1123

Pytorch学习笔记(III)——提取特征

目录一、引言二、具体步骤1、参数模型2、网络结构3、参数载入4、特征提取器5、读取图片三、完整代码 一、引言   深度学习在许多任务中主要充当着特征学习的作用,而学习完的特征才是后续应用的一个关键。本文将主要介绍,如何提取任意目标层的特征图。   本文以输入数据为图片为例。 二、具体步骤 1、参数模型 博主使用了ResNet50训练了一个人脸识别的网络   训练完成的深度学习模型,我们会保存一...

lockonlxf的博客 2643

三菱CNC数据采集实战:从环境搭建到代码实现的完整指南

本文提供了一份完整的三菱CNC数据采集实战指南,涵盖从开发环境搭建、核心SDK获取、网络配置到基于C#和A2协议的完整代码实现。文章详细解析了初始化、连接管理、数据获取与展示四大核心模块,并分享了错误处理、性能优化及与MES系统集成的关键技巧,帮助工程师快速构建稳定可靠的工业数据采集系统。

wood5的博客 889

ffplay,ffplay_g与enable-debug

一. ffmpeg debug level设置及configure enable-debug选项含义 ./configure --help Developer options (useful when working on FFmpeg itself): --disable-debug disable debugging symbols --enable-debug=LEVEL set the ...

along 1974

华为项目TR5评审后发现了重大缺陷的应急处理经验

华为TR5评审后发现重大缺陷时,启动分级应急机制:1)缺陷分级:按严重性(致命/严重/一般)评估影响;2)应急响应:跨部门会议制定方案,冻结生产并调配资源;3)根因修复:通过RCA定位问题,设计变更后回归测试;4)变更管理:评审修复影响,调整发布策略;5)持续改进:记录缺陷闭环,优化流程。案例显示,软件闪退问题通过热修复补丁和代码重构解决。关键工具包括Jira、FMEA等,确保缺陷在量产前拦截,降低风险。

从技术实践立足,从项目管理方法论延伸思考 1069

ffmpeg编译参数详解

ffmpeg编译参数详解 Usage: configure [options] 用 法:configure [选项] Options: [defaults in brackets after descriptions] 选 项:[描述之后的方括号里的是默认值] Standard options: 标准选项: --help print this message 打印这个信息,例如:./configure --h...

zhaofuguang的专栏 2117

从防御者视角复盘:用WinArpAttacker和Wireshark在Windows上模拟并检测ARP欺骗攻击

本文详细解析了Windows平台下的ARP欺骗攻击与防御策略,通过WinArpAttacker和Wireshark工具模拟攻击并检测异常流量。文章涵盖实验环境搭建、攻击原理深度解析、流量特征分析及企业级防御方案,帮助安全运维人员全面掌握ARP攻击检测与防护技术。

weixin_30918633的博客 121

Flutter 直接调用so动态库,或调用C/C++源文件内函数

我把 .so 文件尝试放过好几个目录/lib/,最终都会报这个错误,现在才知道库文件需要放在你根本想象不到的地方!!!尝试了一些方法还是不行后我放弃了 ffi,想着用 Flutter 的 MethodChannel 桥接 android/ios 原生,再让原生去调 native 层。一顿操作把Android端的搞定了,当然中间涉及到 Kotlin和C++ 层的数据类型映射的痛苦,而且业务函数也不像一个 helloworld 那么简单,别提有多痛苦了。

开发以大橘为重 8351

FFMPEG 调试

编译FFmpeg得到二进制文件,之后就是对二进制库的调用,这时FFmpeg就像一个黑盒子。作为程序员,难道不想研究一下FFmpeg的具体实现?比如是怎么拿到歌曲信息的、怎么解码的、怎么推流的,等等。 看源码是理解代码实现的一个办法,而单步调试能从另一个维度去帮到你。本文介绍如何单步调试FFmpeg的代码。 (一)为什么要调试 调试的好处,一来可以理解程序的执行流程,二来有助于定位问题。 相...

1377

基于继电器与三极管的自动水泵控制器DIY:从电路原理到PCB制作实战

继电器作为一种利用电磁原理实现电路通断控制的电气开关,其核心价值在于通过小电流信号控制大电流负载,实现强弱电之间的安全隔离。在自动化控制领域,继电器常与三极管等半导体器件配合,构成驱动电路,将微弱的传感器信号放大,从而可靠地控制电机、水泵等执行机构。这种组合技术广泛应用于工业控制、智能家居及各类电子DIY项目中,例如实现水箱水位的自动检测与控制。本文将以一个典型的自动水泵控制器项目为例,深入剖析如何利用继电器与三极管搭建水位检测与驱动电路,并详细讲解从电路设计、PCB自制(热转印法)到系统调试的完整工程实践

weixin_31774841的博客 347

ffmpeg编译时添加freetype支持,用于在视频中添加文字

现在对ffmpeg的学习到了往视频指定位置添加对应文字的时候了。 发现添加文字,用的是drawtext滤镜,需要在编译ffmpeg的时候,添加–enable-libfreetype。 为此先编译freetype,由于本人ffmpeg使用vs2017编译,并且为了最终的成果物中的文件尽量少,本人编译出的是静态库,此处的是freetype也需要用vs2017进行静态库编译。 读者可以按照如下路径,找到freetype.sln,原来的工程是2010的,此处直接用vs2017打开即可,微软会自动转成vs2017工程

tusong86的博客 3652

[最新]MapReduce综合应用案例 — 气象数据清洗

【代码】[最新]MapReduce综合应用案例 — 气象数据清洗。

M_inherit的博客 1014

针对小缺陷目标:在YOLOv11中引入小目标检测层

摘要: 针对YOLOv11在工业检测中漏检微小目标(如焊点气泡)的问题,研究发现深层特征下采样导致小目标信息丢失。通过在YOLOv11中增加P2检测层(4倍下采样)并融合浅层高分辨率特征,可显著提升小目标召回率。关键优化包括:调整模型结构、谨慎设计数据增强策略(减少MixUp、增加小目标粘贴)、重新分配损失权重(提升P2层权重)、优化推理速度(动态分辨率、通道裁剪)。同时强调数据质量的重要性,建议根据具体场景特性(目标尺寸、分布)定制方案,而非盲目调整模型。

as1225120794的博客 366

ffmpeg编译时的编译选项说明

ffmpeg编译时的编译选项说明 创建时间:2013-5-13 11:11|修改时间:2013-7-5 11:38|作者:|来源:http://blog.youkuaiyun.com/zyc851224/article/details/8073136   编译选项说明 ./configure   --prefix=/d/project/OpenSource/ffmpeg_mingwBuild

Yang_Seal的专栏 5895

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ffmpeg用g++编译时的注意事项

1、编译时出现下面错误 libavutil/common.h:185: 错误:‘UINT64_C’ 在此作用域中尚未声明 解决方法: libavutil/common.h增加如下代码 //user add start #ifndef INT64_C #define INT64_C(c) (c ## LL) #define UINT64_C(c) (c ## ULL) #endif

走向辉煌 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ffmpeg和x264在mingw下编译

x264 configure时的参数   如果想编译带调试信息的版本,加上下列参数 --disable-asm --enable-debug   如果想编译成静态库,加上 --enable-static   如果想编译成动态库,加上 --enable-shared   ffmpeg在configure时要相应加上 --enable-gpl --enable-libx264

Copy anywhere 1190

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ffmpeg编译时的问题

ffmpeg用cygmin编译时提示 Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 9 in /cygdrive/d/Workspaces/VideoDemo/AndroidManifest.xml 在Application.mk中添加APP_PLATFORM := an

xunleji的专栏 729

ffmpeg使用NDK编译时遇到的一些坑

跟着网络上的教程一步一步的走,编写编译脚本,然而总是出现错误,这里记录一下 一、提示头文件未找到 编译时报错: In file included from libavfilter/aeval.c:26:0: ./libavutil/avassert.h:30:20: fatal error: stdlib.h: No such file or directory #include &lt...

luo0xue的博客 8591

macOs上交叉编译ffmpeg及安装ffmpeg工具

本文详细介绍了在MacBook Pro(macOS 14.6.1)上编译安装FFmpeg的完整过程。首先下载并解压FFmpeg 7.0.2源码,解决编译时遇到的nasm/yasm依赖问题。然后重点说明了Android平台的交叉编译配置,包括NDK路径设置、环境变量配置和自定义编译脚本的编写。最后展示了如何在macOS系统上安装预编译的FFmpeg工具链,包括环境变量配置和权限问题的解决方法。整个过程涵盖了从源码编译到工具安装的完整流程,为在macOS系统上使用FFmpeg提供了详细指导。

wangyongyao1989的博客 1387

VC编译FFmpeg(带调试信息)

1、需要MinGW,Basic Setup就可以了,这样同时安装了msys。 2、下载yasm-1.3.0-win64.exe(我的是64位操作系统),复制到C:\MinGW\msys\1.0\bin目录下,并改名为yasm.exe。 3、编辑C:\MinGW\msys\1.0目录下的msys.bat文件,在首行加上call "C:\Program Files (x86)\Microsoft ...

SunrayME的专栏 5813

linux下opencv with ffmpeg安装

最近需要在linux中使用opencv的VideoCapture,获取网络摄像头视频,但是一直在open时返回false。原因在与opencv编译过程中没有ffmpeg。 解决方法是先安装ffmpeg,然后编译一遍opencv,在cmake时加一个ffmpeg选项。网上查到好多和交叉编译相关的,但是这里我不需要。 解决: 1.安装ffmpeg。在很多博客中写的是源码编译,但是我用命令直接安装就可以...

街道口扛把子的博客 1万+

linux下ffmpeg安装

linux下ffmpeg安装 1.ffmpeg下载地址: http://www.ffmpeg.org/download.html 2.解压 1$ tar zvfj ffmpeg.tar.bz2这里作者假设已经重命名为ffmpeg.tar.bz23.解压后进入ffmpeg的文件夹,查看readme, 可以看到和正常的编译安装步骤无异configure && make && ma

vicklin的专栏 3526

ffmpeg在linux下编译时遇到的错误,以及修正方法

FFMPEG在Linux下编译过程中出错总结 一.Nasm的版本问题 如果安装x264出现nasm版本过低或者没有时,下载安装最新版nasm。 安装过程以及注意事项: 如果nasm版本过小先卸载 sudo apt-get autoremove --purge nasm 然后下载nasm解压,进入到nasm目录下 然后执行 ./configure--prefix=/usr 注意这个路

BJ4015的博客 2245
上一篇: ffmpeg命令行接收UDP(MPEG-TS)数据
下一篇: ffmpeg: the mother of all command lines
glcdw
博客等级 码龄18年 8粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值