前言

最近在学习下FFmpeg源代码,也会同时记录这一学习过程。这篇是这一系列的开篇,记录FFmpeg的源码调试方法。
调试环境:Mac + Xcode

整体调试流程

使用Xcode调试FFmpeg源代码,主要有以下几个步骤:

  1. 下载FFmpeg源码
  2. 编译FFmpeg
  3. Xcode调试FFmpeg源码

下载FFmpeg源码

直接github上下载即可,https://github.com/FFmpeg/FFmpeg

编译FFmpeg

最终的目的是使用ffplay播放视频,并且能够源码调试这个播放流程。

安装SDL库

ffplay的编译依赖SDL库,所以先要安装SDL。直接是用brew安装

1
brew install sdl2

开始编译FFmpeg

需要编译可调试的ffplay,所以编译选项需要带上 enable-ffplayenable-debug。最终的编译指令如下:

1
2
3
4
5
// 第一步
./configure --enable-debug --disable-optimizations --disable-asm --enable-ffplay

// 第二步 (-j8 表示并行编译使用的线程数为8,可以提升编译速度)
make -j8

验证编译产物

编译完成后,会生成几个可执行文件:

  1. ffmpeg && ffmpeg_g
  2. ffprobe && ffprobe_g
  3. ffplay && ffplay_g

其中带g后缀的就是可调式的版本
ff3
执行ffplay_g,看能否正常播放视频

1
./ffplay_g demo.mp4

ff4

Xcode调试FFmpeg源码

参考该链接 https://zhuanlan.zhihu.com/p/479796037

需要注意的是:该链接中调试的是ffmpeg,所以我们需要将ffmpeg_g替换成ffplay_g
ff2

遇到的问题

编译FFmpeg后,产物没有ffplay

  1. 没有安装SDL
  2. 没有打开enable-ffplay编译选项

可以将configure输出到文件,查看编译产物是否带ffplay

1
./configure --enable-debug --disable-optimizations --disable-asm --enable-ffplay > ff.txt

ffplay

参考链接

  1. macos系统上调试FFmpeg的三种方式
  2. macOS 编译ffmpeg,但ffplay不生成的问题
  3. Mac编译FFmpeg和ffplay