ffmepg在CentOS编译和调试(DEBUG)技巧总结

编译主要参考官方文档:http://ffmpeg.org/trac/ffmpeg/wiki/CentosCompilationGuide可以少走很多弯路。

1.官网下载最新的ffmpeg源码
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

2.官网下载x264,并编译x264

cd ffmpeg
git clone git://git.videolan.org/x264
cd x264
./configure --enable-static

如果是32位的系统,需要增加参数”-march=i686″,否则LD过程可能报错:

CFLAGS="-march=i686" ./configure --enable-static
 --disable-opencl \
 --disable-avs \
 --disable-cli \
 --disable-ffms \
 --disable-gpac \
 --disable-lavf \
 --disable-swscale \
 --disable-asm


make
make install

如果要增加其他新的库,比方说mp3,amr等等,可以我前面推荐的官方编译文档

3.配置ffmpeg,并支持DEBUG

./configure --enable-debug=1 --disable-yasm  --disable-static --enable-shared \
--enable-gpl --enable-version3 --disable-w32threads  --enable-bzlib \
--enable-libfreetype   --enable-libx264 --enable-zlib

然后修改config.mak 文件:
vi config.mak
a. 修改CFLAGS= ….这一行,把其中的-g1参数替换为-g, 该行的-O3参数替换为-O
b. STRIP=strip这一行替换为STRIP=echo
c. 替换其他行的-O3选项为-g

make
make install

4.执行ffmepg时,会遇到报错,修改以下系统配置
vi /etc/ld.so.conf
文件尾部加入新的一行:
/usr/local/lib
保存后,执行命令:
ldconfig

5.可以用gdb开始调试
gdb ffmpeg
设置一下av_read_frame, av_write_frame, avcodec_open2等关键函数的断点
>>break utils.c:1486
>>break mux.c:732
>>break h264_mp4toannexb_bsf.c:73
>>break utils.c:788
开始正式执行命令,带上命令参数
>>run -i test.mp4 -vbsf h264_mp4toannexb -an test.h264-i test.mp4 -vbsf h264_mp4toannexb -an test.h264

我的这条ffmpeg命令是把一个mp4文件中的h264视频提取保存为h264 ES流文件。

回复

你的邮件地址不会被公开(Your email address will not be published.) Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>