FFmpeg: building example C codes

2023-11-27 17:09:13 浏览数 (2)

背景

FFmpeg源码目录中doc/examples下有不少基础例子,搭建一个可以单步调试这些demo的环境相信对深入了解FFmpeg一定能起到事半功倍的效果

编译

examples/README告知了我们如何编译,这里我们选择方法2

笔者的环境是Mac M1,在终端窗口执行

./configure && make -j4 examples

编译产物中带_g的可执行文件是可以用来调试的

如果你是x86_64的架构,想编译arm64的可执行文件,可以执行如下命令

./configure --enable-cross-compile --arch=arm64 --cc='clang -arch arm64' && make -j4 examples

调试

源码调试环境的搭建可以参考编译ffplay并导入IDE断点调试

这里我们以show_metadata.c举例,看看metadata是从哪里获取的

首先可以看到在avformat_open_input后,fmt_ctx上的metadata就已经被填充

通过进一步单步调试,我们发现metadata是在demuxer的reader_header后被填充

因为输入是一个mp4文件,所以会走到mov_read_header

在mov_read_default中,会逐步填充metadata

比如当解析到文件的ftyp时会写入major_brand和minor_version

~~END~~

0 人点赞