最近又接触了FFMPEG,想起当年初到公司时的情景,领导安排我更新当前所用的FFMPEG,那时公司还没有多少人接触嵌入式Linux。现在虽然公司还是不重视嵌入式基础,但“交叉编译”这类术语,很多人也有了认知。下面是当年做的笔记,一直不发表出来是怕有人说,但已经过去那么多年了,版本又那么旧,估计没什么了。
一、准备环境
1、MinGW
1)、到
http://www.mingw.org/下载最新版本的安装包:mingw-get-inst-20111118.exe
2)、双击运行,假设安装在D盘。在提示选择组件时,选择“MYSY basic System”(注:可选择g++编译器,也可以不选择)。
它将在Windows下模拟一个“Linux环境”。
3)、安装完成后,将D:MinGWin和D:MinGWmsys1.0in添加到系统环境变量中。
4)、此版本的gcc版本为4.6.1
2、安装yasm
1)、到
http://yasm.tortall.net/Download.html下载yasm-1.2.0-win32.exe
2)、将其改名为yasm.exe,放到D:MinGWin目录下。
3、安装pkg-config.exe
1)、下载pkg-config
地址
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip
2)、将压缩包的bin目录的pkg-config.exe复制到D:MinGWin目录下。
4、下载libglib-2.0-0.dll(pkg-config.exe需要这个库)
1)、下载地址:
http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.24/glib_2.24.1-1_win32.zip
2)、将压缩包bin目录的libglib-2.0-0.dll,将它放到D:MinGWin目录下。
5、进入MinGW的“Linux”环境
进入D:MinGWmsys1.0,双击msys.bat运行即可。
二、编译FFMPEG
1、下载最新版本FFMPEG:0.8.7,地址http://ffmpeg.org/download.html,压缩包名称ffmpeg-0.8.7.tar.bz2
2、将其放到D:MinGWmsys1.0homelatelee目录下(按Linux习惯)。
3、tar xjf ffmpeg-0.8.7.tar.bz2
4、配置ffmpeg:
./configure --disable-everything --enable-decoder=h264
--enable-demuxer=h264,avi --enable-muxer=h264,avi
--enable-parser=h264 --enable-w32threads --enable-shared
--disable-debug --prefix=/home/latelee/ffmpeg-lib --enable-protocol=file
--disable-network
该配置只使能H264相关的组件
5、编译
make
6、将库及头文件安装到前面指定的路径
make install
头文件在D:MinGWmsys1.0homelateleeffmpeg-lib的include目录下
动态库在D:MinGWmsys1.0homelateleeffmpeg-lib的bin目录下。
注意:对于同一个动态库,FFMPEG会生成不同名称的文件,如编码解码器avcodec,会生成
avcodec-53.8.0.dll、avcodec-53.dll、avcodec.dll,在调用时必须使用带有_主版本号_的文件,即avcodec-53.dll。
关于路径分隔符说明:
1、windows下为“”,在MSYS中属于Linux环境,分隔符为“/”。
===========================================================================================================
附:
===========================================================================================================
编译libx264
# ./configure --prefix=/home/latelee/x264 --enable-static --enable-shared
# make
# make install
在bin中生成libx264-119.dll(其中119为版本号)
使能H264相关的
./configure --disable-everything --enable-decoder=h264
--enable-demuxer=h264,avi --enable-muxer=h264,avi
--enable-parser=h264 --enable-w32threads --enable-shared
--disable-debug --prefix=/home/latelee/ffmpeg-lib --enable-protocol=file
--disable-network
===========================================================================================================
禁止所有编码器、输入、输出设备(但可以用SDL播放),其它使能
./configure --enable-shared --disable-static --disable-encoders
--disable-devices --enable-w32threads --disable-debug
--enable-memalign-hack --disable-network --prefix=/home/latelee/ffmpeg-lib
===========================================================================================================
不禁止所有的,使用libx264
(注:编译时需要libx264.dll库,运行时需要libx264-119.dll库,将libx264-119.dll复制为libx264.dll即可)
$ ./configure --enable-shared --enable-memalign-hack --enable-w32threads
--disable-debug --enable-libx264 --extra-cflags=-I/home/latelee/x264/include
--extra-ldflags=-L/home/latelee/x264/bin --enable-gpl --prefix=/home/latelee/ffmpeg-lib
===========================================================================================================
最大安装,使用所有库,额外添加libx264库(编译时需要libx264.dll库,运行时需要libx264-119.dll库,改名即可)
./configure --enable-shared --disable-static --enable-w32threads --disable-debug
--enable-memalign-hack --prefix=/home/latelee/ffmpeg-lib --enable-libx264
--extra-cflags=-I/home/latelee/x264/include
--extra-ldflags=-L/home/latelee/x264/bin --enable-gpl
===========================================================================================================
最大安装,不使用libx264.dll
./configure --enable-shared --disable-static --enable-w32threads --disable-debug
--enable-memalign-hack --prefix=/home/latelee/ffmpeg-lib
李迟 2015年6月5日 周五 中午