windows下编译 ffmpeg源码生成静态库用于Dev-C++工程

 

1 set-Up

1.1.下载ffmpeg源码ffmpeg-4.0.2.tar.bz2,http://ffmpeg.org/download.html 解压到 D:\04_project\ffmpeg\ffmpeg-4.0.2

1.2下载mingw 安装程序

mingw-get-setup.exe https://osdn.net/projects/mingw/releases/

默认安装到C:\MinGW

mingw安装管理器可用于安装和管理mingw和msys,但是这个版本的mingw不是我们编译ffmpeg所需要的。mingw安装管理器仅仅用来安装msys。

把msys1.0的所有bin文件都安装一遍,如grep,iconv等。

1.3 解决pr和yasm命令没有找到以及pkg-confg没有找到

1.3.1 pr

pr command not found

下载地址 https://sourceforge.net/projects/gnuwin32/

安装后从bin目录复制pr.exe,libiconv2.dll,libintl3.dll到C:\MinGW\msys\1.0\bin

1.3.2 yasm

Yasm command not found  http://yasm.tortall.net/Download.html

将下载到的exe程序重命名为yasm.exe,复制到C:\MinGW\msys\1.0\bin

1.3.3 pkg-config

pkg-config依赖glib和gettext-runtime

下载如下三个包glib, pkg-config, pkg-config-dev 解压后将其中的exe.dll全部拷贝到 to C:\MinGW\msys\1.0\bin

http://win32builder.gnome.org/packages/3.6/glib_2.34.3-1_win32.zip

http://win32builder.gnome.org/packages/3.6/pkg-config_0.28-1_win32.zip

http://win32builder.gnome.org/packages/3.6/pkg-config-dev_0.28-1_win32.zip

1.4下载MinGW-w64

下载文件:i686-8.1.0-release-posix-dwarf-rt_v6-rev0,下载地址: https://sourceforge.net/projects/mingw-w64/files/

 

1.5.将MinGW-w64与msys关联起来,MinGW-w64安装目录是:D:\01_tools\mingw-w64\i686-8.1.0-release-posix-dwarf-rt_v6-rev0\mingw32

在C:\MinGW\msys\1.0\etc中使用notepad++打开fstab文件,在其中添加唯一一条映射:

D:\/01_tools\/mingw-w64\/i686-8.1.0-release-posix-dwarf-rt_v6-rev0\/mingw32        /mingw

注意:windows中要加上反斜杠。

2 使用msysMinGW-w64编译ffmpeg,生成.a的静态库,头文件以及bin文件

从C:\MinGW\msys\1.0\中打开msys.bat进入msys终端;

  cd d:

 cd 04_project/ffmpeg/ffmpeg-4.0.2/ffmpeg-4.0.2

 ./configure --prefix=/d/01_tools/mingw-w64/i686-8.1.0-release-posix-dwarf-rt_v6-rev0/mingw32/i686-w64-mingw32

其中prefix的值是MinGW-64安装目录中的i686-w64-mingw32。在1.1中下载解压出来的ffmpeg-4.0.2源码目录中执行configure

 make

 make install

 lib中得到静态库和pkgconfig:

 include中得到头文件

3 在dev-c++中使用ffmpeg的静态库

我们编译ffmpeg提供的example中的muxing.c

3.1 创建工程

 a. 新建一个控制台c程序工程

 b. 在工具->编译器选项中新建一个编译器new1

编译example用到的编译器是我们编译ffmpeg所使用的编译器 D:\01_tools\mingw-w64\i686-8.1.0-release-posix-dwarf-rt_v6-rev0\mingw32

如下是编译器的配置:

 

 

 c 配置项目属性

 打开项目->项目属性,在参数->链接中填入一下静态库:

-lavformat

-lavcodec

-lswresample

-lavutil

-lswscale

-pthread

-lm

-lz

-lsecur32

-lws2_32

-liconv

-lole32

-luser32

-lbcrypt

 到目前为止,我们缺少两个库

 libconv.a和libz.a

 d 编译 libconv.a

下载libconv的源码

https://ftp.gnu.org/pub/gnu/libiconv/

下载libiconv-1.15

将下载的源码目录复制到mysy的home目录中,例如C:\MinGW\msys\1.0\home\cheny,“cheny”是当前用户。

在msys终端中执行如下命令:

 ./configure  --prefix=/c/MinGW/msys/1.0/lib/libconv

 make

 make install

将编译好的库和头文件目录添加到项目属性的文件/目录中。

 

 e 编译libz.a

下载源码地址:http://gnuwin32.sourceforge.net/packages/zlib.htm

 复制zlib-1.2.3目录到C:\MinGW\msys\1.0\home\cheny

cd到zlib-1.2.3,执行如下命令:

cp win32/Makefile.gcc .

make -f Makefile.gcc

export "INCLUDE_PATH=/c/MinGW/msys/1.0/lib/zlib/include"

export "LIBRARY_PATH=/c/MinGW/msys/1.0/lib/zlib/lib"

export "BINARY_PATH=/c/MinGW/msys/1.0/lib/zlib/bin"

make install -f makefile.gcc

将编译好的库和头文件目录添加到项目属性的文件/目录中。

 

 f 编译工程

成功得到exe程序,在不需要avcodec-58.dll/avfilter-7.dll/avdevice-58.dll/avformat-58.dll/avutil-56.dll等动态链接库的情况下也可以运行程序。

猜你喜欢

转载自blog.csdn.net/cyz_2014/article/details/83052345