使用Xcode调试FFmpeg内部代码

Xcode 搭建FFmpeg开发环境 首先我是一个Android 开发工程师,最近在做音视频开发的学习,对于必学框架API-FFmpeg,所涉及的语言都是C语言或者C++语言,在Mac 电脑上,FFmpeg 的学习更加方便。FFmpeg的学习看其源代码时需要下载他的仓库,直接读源码,其他场景下的编译都是自己根据自己的需求进行编译的,但是在Mac 中不需要进行编译就可以学习FFmpeg的各个API。通过brew安装之后,ffmpeg需要的头文件和lib文件都会安装到/usr/local/X的位置。第二步 添加动态链接库。 阅读详情

分享一下Xcode调试FFmpeg的方法。

1.配置configure文件

首先需要配置configure生成Makefile,Makefile成功生成后再使用Xcode的External Build System执行make命令,这些操作和使用命令行编译是一样的。需要注意的是ffmpeg默认configure会去掉调试符号和进行编译优化,这样会导致debug进入的时候没办法看到每个变量的值,通过执行帮助命令

./configure -h

目前最新的FFmpeg可以看到下面两个选项

这里需要手动指定,下面是我自己的Mac下的configure命令

./configure --prefix=$BASE_PATH/build/ffmpeg_build \
            --enable-debug=3 \
            --disable-optimizations \
            --disable-stripping \
            --enable-yasm  \
            --enable-gpl \
            --enable-pthreads

这样生成Makefile即可。

2.导入Xcode的External Build System

新建一个target,选择下面的External Build System,这里专门用于执行外部编译工具的命令编译。由Makefile管理的这种C/C++工程都可以使用这个。

 点击next输入target名字后保存即可。可以看到一个红色圆圈圈的target,就是上一步创建的结果,如下图。

这时可以先在生成的Makefile目录(也就是FFmpeg的主目录)下先 make clean一下,然后执行刚才创建的ffmpeg-xcode,这时正常应该是通过Xcode执行make命令,重新执行Makefile。

3.执行fftool中的可执行文件

编译完毕后就可以执行或者调试ffmpeg、ffplay、ffprobe这三个程序了。

首先还是建一个控制台程序,建完后删除自动生成的main文件,如下

 

 下一步就是把Makefile生成的ffmpeg_g设置给这个target。也就是说这个target我们不写代码,而是通过schema设置一个生成好的可执行文件给target。

在文件中找到刚才执行make生成好的可执行文件,注意需要选择后缀为_g的。

 到这一步就可以给ffmpeg在schema中输入参数,进行源码调试了。下面随便给ffmpeg输入一个264文件。

 进入断点

 4.xcode查看FFmpeg源码

现在可以调试代码了,还有一个问题,如何直接在Xcode中查看整个工程的源码。这里我一直没有找到特别靠谱的办法,使用一个比较临时的方法。先建一个控制台target,然后把FFmpeg源码目录拖入Xcode,如下

 随后会弹出对话框,第一步不要选择外部编译,如下

 下一步直接把这些代码关联到刚才新建的target

 然后编译一波,这样虽然编译不过,但是代码跳转正常。

5.自己代码调用FFmpeg库调试

上文完成了fftools中三个应用的调试设置,下面看一下自己调用库调试的方法。

还是建一个控制台程序。首先需要把生成静态库的路径以及头文件路径设置好。 

下一步需要导入Mac本地的链接库,可以一边编译,看缺什么符号再添加,这里贴一下需要的最基本的库,如果遇到找不到符号需要调整一下。

 对于ffplay,由于其依赖SDL,需要更多的库,下面贴出我用到的,如果编译缺东西可以在这个基础上调整。

 下面可以在新建target中加入一段测试代码,尝试运行

#include <iostream>
#include <unistd.h>

extern "C"{
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
}

int main(int argc, const char * argv[]) {
    
    AVFormatContext *format_context;
    
    av_log_set_level(AV_LOG_VERBOSE);
    
    format_context = avformat_alloc_context();
    avformat_open_input(&format_context, "xxx/mac_build/Debug/out.h264", nullptr, nullptr);
    avformat_find_stream_info(format_context, nullptr);
    
    av_dump_format(format_context, 0, 0, 0);
    
    while (true) {
        sleep(1);
    }
    
    return 0;
}

 这里存在一个问题,在FFmpeg内部执行断点时点击continue后面的断点无法停止,不知道什么原因,希望了解的朋友可以指点一下,目前这里我使用命令行进行操作,手动打断点,然后用c命令执行。

b xxxx.c:1234
c

Xcode 调试 ffmpeg Xcode调试 ffmpeg 一、版本信息 Xcode版本:12.4 ffmpeg版本:4.3 二、编译ffmpeg ./configure--prefix=ffmpeg_build--enable-sdl2--enable-debug=3 --disable-optimizations--disable-stripping--disable-x86asm sudo make -j 4 三、创建Xcode项目 1、创建空的项目 与ffmpeg同级目录 ... 阅读详情

相关推荐

iOS 利用FFmpeg 开发音视频流(一)——Mac 系统上编译 FFmpeg

说到 FFmpeg,大家都知道这个怪物一开始就是用来做视频播放器的,之所以这么受欢迎,是因为其解码手段非常牛,简单点说,就是不支持的播放格式很少,这当然就成了很多做视频相关开发的小伙伴为之倾慕了。博主今天来给大家科普一下怎么优雅的使用 FFmpeg 这个让做视频相关的程序员又爱又恨的库,今天第一编,我们就来点简单的,在 Mac 上利用 FFmpeg 将 fly 格式转成 成 mp4格式,这个技巧这么实用,相信各位小伙伴都会为之喜好吧,那么我们首先得准备好工具了。

irainsa的博客 1104

xcode 的app工程与ffmpeg 4.4版本的静态库联调,ffmpeg内下的断点无法暂停。

iOS 的app项目入口进入,如何在不重新编译ffmpeg的情况下添加断点调试ffmpeg源码

Dream_Dynasty的博客 1570

FFmpeg在Windows下使用VisualStudio调试

FFmpeg是音视频开发者的入门和必备工具,其通过一套完整的接协议、解封装、解码、渲染(或播放)、编码、封装,将大量的媒体协议、封装协议、codec、filter等集成到一起。 对于许多开发者来说,想要友好的调试FFmpeg似乎是一件不太容易的事情。FFmpeg虽然支持大部分编译环境,但是大部分Windows用户使用FFmpeg时的编译、调试环境并不那么友好。不折腾一番,想要在VisualStudio上成功调试起FFmpeg,似乎不太容易。 我从17年开始第一次接触FFmpeg,到现在(2020年7月)

anzhijun的专栏 1619

MAC Xcode 调试FFmpeg源码

一、下载ffmpeg源码 你能看到这编文章肯定有源码? 二、编译出命令执行文件 ./configure --enable-debug --enable-gpl --disable-optimizations make -j 8 得到文件用于xcode执行命令的: 三、创建xcode项目 稍等个几分钟 添加Schemes 选择ffmpeg目录下的ffmpeg_g 开始调试 打断点可以调试 ...

日敲三万行代码 738

FFmpeg搭建xcode调试环境

ffmpeg在xcode进行debug调试

世界那么大,我想去看看~【随心更新,看世界去了😄】 535

arcgis导出自身相交数据

今天接到一个客户需求,一份面文件,里面有好多元素是两两相交甚至是三个相交的,现在要把这些重叠部分提取出来,并且把相交部分的原始要素的名称也保留在字段中,也就是说名称这个会有好多个名称字段,如果两个要素相交那就是前两个名称字段有值,后面的为空,如果是三个要素相交,那么输出的这个要素就是前三个名称字段有值,后面的为空,嗯,这里也不太确定会出现多少个名称字段,这个需要依照数据来定。 这是原始数据,...

miaowumi92的博客 6787

使用Xcode调试FFmpeg源码

本篇介绍的是使用Xcode编译FFmpeg,使用Xcode进行编译方便后续源码调试以及IOS集成音视频

m0_60456373的博客 1401

Matlab Robotics Toolbox实战:四自由度机械臂建模与仿真全流程(附代码)

本文详细介绍了使用Matlab Robotics Toolbox进行四自由度机械臂建模与仿真的全流程,包括DH参数定义、模型构建、可视化、运动学仿真及交互控制。通过实战案例和代码示例,帮助读者快速掌握机械臂建模技巧,提升机器人学习效率。

weixin_42538752的博客 415

Xcode上编译调试ffmpeg

本文详细介绍了在macOS系统中源码编译FFmpeg的方法:首先下载解压FFmpeg-7.0.2,创建编译目录并修改文件权限;然后通过./configure指定路径进行编译,依次执行make和make install命令;最后配置环境变量并在Xcode中调试源码。文中提供了具体命令和操作步骤,包括查找bin目录路径、编辑.bash_profile文件等完整流程,帮助开发者成功在macOS平台完成FFmpeg的源码编译和环境配置。

wangyongyao1989的博客 930

ComfyUI的G-Dino模型加载器报错解决方案:从崩溃到重生

遇到G-Dino模型加载器报错不要慌,按照本文的步骤操作,99%的问题都能解决。模型文件正确下载到指定位置segment_anything节点安装完整且无冲突需要补充更多细节或故障排除方法吗?可以随时告诉我。

2301_78150483的博客 4020

CXL协议-第三章 CXL事务层

CXL.io为I/O设备提供了一个非一致的负载/存储接口。图3-1显示了Flex总线分层层次结构中的位置。事务类型、事务分组格式、基于信用的流量控制、虚拟通道管理和事务排序规则遵循PCIe*定义,详情请参考PCIe基础规范的“事务层规范”章节。本章重点介绍了用于CXL.io的著名的PCIe操作模式或特性。

qq_41305217的博客 2769

macos下ffmpeg 编译及调试(xcode)

目录 下载ffmpeg源码 安装sdl2 编译ffmpeg 建立xcode工程 将之前下载的ffmpeg源码文件夹拖到工程里 添加scheme 调试 致谢 下载ffmpeg源码 git clonehttps://git.ffmpeg.org/ffmpeg.git 版本信息: master分支 commit 3e8b8b6b509c8c37defd3a8c32...

glw@glw的博客 1718

Dify 第 7 篇 Dify 应用介绍 + 聊天助手&Agent 应用关键点说明

本文介绍了Dify应用的核心概念与使用方法。Dify是基于大模型构建的实际场景应用,提供API、WebApp和易用界面。包含5种应用类型:聊天助手、文本生成、Agent、对话流和工作流。创建方式有模板创建、空白应用和DSL文件三种。重点讲解了聊天助手和Agent应用的关键功能:聊天助手支持提示词优化、知识库引用、文件处理等;Agent应用则强调推理能力、工具调用和任务自动化。文章还详细介绍了应用的调试、发布和管理工具,为开发者提供了全面的应用构建指南。

甘蓝的专栏 1882

Xcode 调试(debug) ffmpeg with ffmpeg_g

转自:https://www.jianshu.com/p/226c19aa6e42 使用Xcode断点调试ffmpeg 原文出自这里http://www.likecode.com/2014/12/29/187/ 但是里面有几个细节说得不太清楚,这里记录一下具体的配置方式 1. 下载ffmpeg源码https://github.com/FFmpeg/FFmpeg 8月18日更新 编译ffmp...

lipeiran1987的专栏 845

基于Simulink的占空比调制DTC降低转矩脉动

修改传统SVPWM模块,输入占空比d和有效矢量索引,计算Ton​=d∗Tc​、Toff​=(1−d)∗Tc​,生成对称PWM波形(替代开关表直接输出)。:低速时(n<500rpm)减小dmax​=0.6(避免磁链畸变),高速时(n>2000rpm)增大dmax​=0.8(提升动态响应);kT​/kψ​:转矩/磁链误差增益(需整定,如kT​=0.02/(N⋅m),kψ​=0.1/Wb);(θ为电压矢量与磁链夹角)。② SVM-DTC(占空比计算模块启用,d0​=0.5,kT​=0.02,kψ​=0.1)。

amy_mhd的博客 87

2025爬虫实战:某音直播间实时弹幕获取原理及源码分析

某音直播弹幕虽然没有直接挂在 DOM 上,但由于用的是西瓜播放器,弹幕是通过 JS 接口动态渲染的,这就给了我们 Hook 的机会。关键点是找到调用的位置,然后拦截并输出对象里的message字段。这个思路其实也适用于其他前端渲染的播放器,比如 B 站的 DPlayer、HLS.js、甚至很多自研播放器都有类似结构。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1810

使用XCode debug ffmpeg/ffplay

ffmpeg-xcode ffmpeg xcode project build steps step 1 编译 ffmpeg tar xvf ffmpeg-3.0.2.tar.bz2 cd ffmpeg-3.0.2 ./configure --enable-debug make -j8 step 2 新建一个空的 xcode 项目 Create a new Xcode projec...

along 1449

知识追踪实战:lstm+ Multi-head Attention注意力机制的学生做题成绩预测实战

知识追踪实战:lstm+ Multi-head Attention注意力机制的学生做题成绩预测实战

2221

FFMPEG 调试

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

1377

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

xcode调试php源码,Xcode调试ffmpeg源码(十五)

前言有时候需要进行源码断点调试(断点调试是寻找问题的利器,同时也有利于加快理解ffmpeg源码),本文介绍如何用Xcode开发环境进行ffmpeg的源码断点调试,这里介绍了两种方式开启源码断点调试,开启源码断点调试的前提是编译ffmpeg库的时候开启--enable-debug选项。源码调试前的准备环境系统:Mac OS X 10.15.4 (19E266)Xcode:11.4 (11E146)f...

weixin_36205186的博客 305

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Xcode中调试各版本FFmpeg

一、版本信息 Xcode版本:12.4 ffmpeg版本:4.3 二、编译ffmpeg ./configure--prefix=ffmpeg_build--enable-sdl2--enable-debug=3 --disable-optimizations--disable-stripping--disable-x86asm sudo make -j 4 三、创建Xcode项目 1、创建空的项目 与ffmpeg同级目录 2、导入ffmpeg 这一步需要等待一些...

javashu2012的专栏 559

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

使用Xcode断点调试ffmpeg

最近想在xcode断点调试ffmpeg,以深入学习ffmpeg源码。一开始参考了https://www.jianshu.com/p/226c19aa6e42。但发现只能断点调试,点击源码方法无法实现自动跳转,跟踪起来十分不便。于是决定暴力的创建xcode工程,添加ffmpeg所有源码来实现真正的即可加断点调试又可以跟踪跳转代码的xcode工程。主要思路是先configure生成config.h,依

badousuan的博客 2291

FFmpeg-Xcode项目实战指南

FFmpeg-Xcode项目实战指南 1. 项目介绍 FFmpeg-Xcode 是一个由 Akagi201 维护的项目,旨在提供一个简单的起点,帮助开发者在iOS或macOS平台的Xcode环境中快速集成和调试FFmpeg。该项目简化了FFmpeg与Xcode的结合过程,使得开发者能够便捷地利用FFmpeg强大的音视频处理能力进行应用开发。 2. 项目快速启动 环境准备 确保您的开发环境满足以下条...

gitblog_00803的博客 580

macos系统上调试FFmpeg的三种方式

FFmpeg作为一个集录制、转换、音/视频编码解码功能为一体的开源框架,自然也需要考虑怎样去和当下流行的视频分析技术融合。本文解决一个问题:如何单步调试FFmpeg的代码。 (一)为什么要调试 调试的好处,一来可以理解程序的执行流程,二来有助于定位问题。 小白:这两个好处,看源码不是就可以了吗? 答:的确是。但如果单步看数据的变化,会深刻很多,而且定位问题时也很直观快速,你甚至可以修改变量的值或下条件断点,充分发挥调试器的功能。 小白:那这就是更好的选择了。 (二)怎么调试 因为我用的.

m0_60259116的博客 3103

Mac XCode FFmpeg 开发环境配置

[转自: https://blog.youkuaiyun.com/matrix_laboratory/article/details/53519619]   1. 安装FFmpeg 这个可以参考 文章Mac FFmpeg x265, aac, ffplay编译安装 2. 创建XCode工程 我创建了一个FFTest的工程,  3. 导入FFmpeg 到重点,其实要说的就是这个 3.1 Set L...

along 2350
上一篇: ffmpeg中AVPacket与AVFrame中数据的传递与释放
下一篇: 卡尔曼滤波在Webrtc中应用的理解
vonchenchen1
博客等级 码龄15年 4595粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值