编译主要参考官方文档:http://ffmpeg.org/trac/ffmpeg/wiki/CentosCompilationGuide可以少走很多弯路。
1.官网下载最新的ffmpeg源码
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
2.官网下载x264,并编译x264
git clone git://git.videolan.org/x264
cd x264
./configure --enable-static
如果是32位的系统,需要增加参数”-march=i686″,否则LD过程可能报错:
--disable-opencl \
--disable-avs \
--disable-cli \
--disable-ffms \
--disable-gpac \
--disable-lavf \
--disable-swscale \
--disable-asm
make
make install
如果要增加其他新的库,比方说mp3,amr等等,可以我前面推荐的官方编译文档
3.配置ffmpeg,并支持DEBUG
--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流文件。