ffmpeg 0.8.7在windows环境mingw环境的编译

最近又接触了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:\MinGW\bin和D:\MinGW\msys\1.0\bin添加到系统环境变量中。
4)、此版本的gcc版本为4.6.1

2、安装yasm

1)、到http://yasm.tortall.net/Download.html下载yasm-1.2.0-win32.exe
2)、将其改名为yasm.exe,放到D:\MinGW\bin目录下。

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:\MinGW\bin目录下。

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:\MinGW\bin目录下。

5、进入MinGW的“Linux”环境

进入D:\MinGW\msys\1.0,双击msys.bat运行即可。

二、编译FFMPEG

1、

下载最新版本FFMPEG:0.8.7,地址http://ffmpeg.org/download.html,压缩包名称ffmpeg-0.8.7.tar.bz2

2、

将其放到D:\MinGW\msys\1.0\home\latelee目录下(按Linux习惯)。

3、

1
tar xjf ffmpeg-0.8.7.tar.bz2

4、

配置ffmpeg:

1
2
3
4
5
./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、

编译

1
make

6、

将库及头文件安装到前面指定的路径

1
make install

头文件在D:\MinGW\msys\1.0\home\latelee\ffmpeg-lib的include目录下
动态库在D:\MinGW\msys\1.0\home\latelee\ffmpeg-lib的bin目录下。
注意:对于同一个动态库,FFMPEG会生成不同名称的文件,如编码解码器avcodec,会生成 avcodec-53.8.0.dll、avcodec-53.dll、avcodec.dll,在调用时必须使用带有_主版本号_的文件,即avcodec-53.dll。
关于路径分隔符说明: windows下为“\”,在MSYS中属于Linux环境,分隔符为“/”。

附:

编译libx264

1
2
3
# ./configure --prefix=/home/latelee/x264 --enable-static --enable-shared
# make
# make install

在bin中生成libx264-119.dll(其中119为版本号) 使能H264相关的

1
2
3
4
5
./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播放),其它使能

1
2
3
./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即可)

1
2
3
$ ./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库,改名即可)

1
2
3
4
./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

1
2
./configure --enable-shared --disable-static --enable-w32threads --disable-debug \
--enable-memalign-hack --prefix=/home/latelee/ffmpeg-lib

李迟 2015年6月5日 周五 中午