FFmpeg 7.1.1 | 调试 ffmpeg.c 环境 - Widows&Clion&WSL

1. 调试 ffmpeg.c 有什么意义

想要开启一段 音视频开发 的旅程,FFmpeg 将是你最具威力的武器。但是目前网上的教程都非常古老,而且很少有系统性的系列。2025 年 FFmpeg 已经来到 7.x , 但书籍、或网上的文章基本上止步于 4.x 。

一般文章能够做到 授之以鱼 就算非常不错了,但是在技术框架的大版本变动后,这些鱼也将逐渐变得腐烂、甚至毒害。我一直在思考,对于文章来说,用什么方式可以减小技术版本升级带来的负面压力。正所谓 授之以鱼,不如授之以渔

ffmpeg 命令行工具可以执行很多音视频操作,而且它就在 ffmpeg 的源码之中。只要有分析它的能力,那无论 FFmpeg 版本变到到少,你都有能力去得到最鲜活的鱼。

ffmpeg.c 是整个 FFmpeg 命令行工具的入口,也就是你每次在终端输入

ffmpeg -i input.mp4 output.mp4

这类命令时,真正开始运行的就是这个文件。调试的过程也可以顺便学会怎么在 WSL 里编译 C 项目、用 GDB 或 CLion 调试大型代码,这些都是编程开发必须掌握的技能。


2. 搭建调试环境准备

目前我是在 Windows 上基于 WSL , 通过 Clion 调试。至于 Clion、WSL 怎么安装,这里就不引申了。

操作系统 : Windows

开发IDE : CLion

工具链: WSL

  • 由于使用的是 WSL,也就是 Windows 的 Linux 子系统,所以 Macos 和 Ubuntu 等 Linux 系统的调试环境也是类似的。

[1]. 准备原材料 : 在当前目录下克隆 ffmpeg 仓库

bash 复制代码
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

[2]. 工具链准备: 在 WSL 中安装工具链

arduino 复制代码
sudo apt update
sudo apt install git build-essential yasm pkg-config libx264-dev libx265-dev libvpx-dev libfdk-aac-dev libmp3lame-dev libopus-dev gdb

然后在 Clion 中的 Settings 中,添加工具链环境。选择 WSL :

到这里我们所需的环境就准备完毕了。接下来看看如何把 ffmpeg 的源码编译为可以调试的项目。


3. 调试 ffmpeg.c

首先,打开下载的 ffmpeg 项目源码,ffmpeg.c 的代码在 fftoools 中。在同调试之前,需要在控制台 configure 一下,然后 make 来自动编译项目:

dart 复制代码
./configure --disable-optimizations --disable-stripping --enable-debug
make -j$(nproc)

然后点击 all -> Edit Configurations 配置:

可执行文件选择刚才生成的 ffmpeg_g 文件。_g 后缀通常表示"debug 版本" ,带有调试符号,未进行优化,适合用 GDB 等调试器调试。

这样,打上断点,点击调试按钮就可以愉快地调试了~


尾声

调试 ffmpeg.c 能帮助我们深入理解 FFmpeg 命令的执行流程,包括参数解析、转码调用等关键环节。通过实际调试,不仅能快速定位问题、便于二次开发,还能提升我们对大型 C 项目的掌控能力。相比单纯阅读源码,调试是一种更高效、更直观的学习方式。无论是功能定制、Bug 修复,还是提升调试工具链的使用能力,搭建调试环境都是迈向深入掌握 FFmpeg 的关键一步。

后面有时间,我会基于对 ffmpeg.c 的调试研究,分享一些音视频相关的

相关推荐
limingade2 小时前
手机打电话时由对方DTMF响应切换多级IVR语音菜单(话术脚本与实战)
android·智能手机·语音识别·蓝牙电话·多级ivr导航·手机个人400电话·手机电话实现ivr语音导航
知北游天2 小时前
Linux:再谈进程地址空间
android·linux·运维
君的名字3 小时前
【跨端框架检测】使用adb logcat检测Android APP使用的跨端框架方法总结
android
qq_171538853 小时前
让MySQL更快:EXPLAIN语句详尽解析
android·数据库·mysql
每次的天空4 小时前
Android-Glide学习总结
android·学习·glide
“初生”11 小时前
安卓手机安装 ChatGPT 全流程图文指南
android·chatgpt·智能手机
与籍同行12 小时前
20200201工作笔记常用命令要整理
android·笔记
tangweiguo0305198712 小时前
Android屏幕适配利器:Kotlin动态尺寸计算工具类完整封装
android·kotlin
aningxiaoxixi13 小时前
android property 系统
android
speop14 小时前
TASK05【Datawhale 组队学习】系统评估与优化
android·java·学习