mingw最小编译ffmpeg

http://ffmpeg.zeranoe.com/blog/


MingGW-w64 Build Script 3.2.3


http://zeranoe.com/scripts/mingw_w64_build/mingw-w64-build-3.2.3.tar.xz


解压以后,在一般的linux机器上执行也可以,在windows的mingw环境执行也可以,得到是不同BUILD_HOST的crosstool。

注意:NLS的支持有问题,libintl_fprintf的定义找不到,所以干脆禁止nls选项。

编译完成以后即得到mingGW-w64的cross-tool。400M吧。有了这个工具,接下来就可以编译各个组件了。


注意:需要svn和git工具

1,如果在linux,应该比较好安装,安装一个subversion和git。

2,如果在win7下,mingw里面安装svn和git,可能比较麻烦,可以之间安装它们的setup.exe然后把路径添加到mingw的path里面。

错误2,没有安装svn和git,
下载svn,安装http://blog.51yip.com/server/901.html
wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.1.tar.gz

tar zxvf subversion-1.6.1.tar.gz  
tar zxvf subversion-deps-1.6.1.tar.gz  
cd subversion-1.6.1/  
./configure && make && make install  

git直接下载一个win版本,把位置添加到path中去,
C:\Program Files (x86)\Git\bin


build x264

./configure \
--prefix=/home/Administrator/dist \
--cross-prefix=/home/Administrator/mingw-w64-i686/bin/i686-w64-mingw32- \
--disable-asm \
--disable-cli \
--enable-shared \
--enable-static \
--host=mingw32


build ffmpeg

PATH=/root/build/3rc/bin:$PATH \
PKG_CONFIG_PATH=/root/build/3rd/lib/pkgconfig \
./configure \
--prefix=/root/build/3rd \
--extra-cflags="-I/root/build/3rd/include" \
--extra-ldflags="-L/root/build/3rd/lib/ -lx264 -static-libgcc" \
--target-os=mingw32 \
--arch=x86_32 \
--enable-gpl \
--enable-version3 \
--disable-w32threads \
--disable-avisynth \
--disable-bzlib \
--disable-fontconfig \
--disable-frei0r \
--disable-gnutls \
--disable-libass \
--disable-libbluray \
--disable-libcaca \
--disable-libfreetype \
--disable-libgsm \
--disable-libilbc \
--disable-libmp3lame \
--disable-libopencore-amrnb \
--disable-libopencore-amrwb \
--disable-libopenjpeg \
--disable-libopus \
--disable-librtmp \
--disable-libschroedinger \
--disable-libsoxr \
--disable-libspeex \
--disable-libtheora \
--disable-libtwolame \
--disable-libvo-aacenc \
--disable-libvo-amrwbenc \
--disable-libvorbis \
--disable-libvpx \
--enable-libx264 \
--disable-libxavs \
--disable-libxvid \
--disable-zlib \
--cross-prefix=/root/build/mingw-w64-i686/bin/i686-w64-mingw32- \
--enable-cross-compile \
--enable-memalign-hack

make && make install 得到ffmpeg.exe

复制依赖的crt的dll和x264的dll

lib # pwd
/root/build/mingw-w64-i686/i686-w64-mingw32/lib
lib # ls *.dll
libgcc_s_sjlj-1.dll  libquadmath-0.dll  libssp-0.dll  libstdc++-6.dll

接下来编译ffplay

。。。。。

下载pkg-config

$ curl --url http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz -o pkg-config-0.28.tar.gz

build pkg-config

$ ./configure --prefix=/home/Administrator/dist --with-internal-glib CFLAGS="-march=i686"

生成了一个i686-pc-mingw32-pkg-config.exe 以及pkg-config.exe

但是在接下来的configure ffmpeg 的时候会出错,所以可能需要用cross-tool来编译pkg-config.

这个问题保留一下。



下载sdl为mingw32预先编译的二进制开发包,修改bin下面的sdl_config的prefix到实际存放的位置

/home/Administrator/build/SDL-1.2.15



build ffmpeg

修改configure脚本,不明白为什么sdl_config和pkg-config这2个命令需要添加$cross_prefix前缀,

先删除掉,否则易使用--enable-cross-compile --cross-prefix的时候,提示找不到工具.

PATH="/home/Administrator/dist/bin:/home/Administrator/build/SDL-1.2.15/bin:$PATH" \
PKG_CONFIG_PATH="/home/Administrator/dist/lib/pkgconfig" \
./configure \
--prefix=/home/Administrator/dist \
--extra-cflags="-I/home/Administrator/dist/include" \
--extra-ldflags="-L/home/Administrator/dist/lib/ -lx264" \
--disable-avisynth \
--disable-bzlib \
--disable-fontconfig \
--disable-frei0r \
--disable-gnutls \
--disable-libass \
--disable-libbluray \
--disable-libcaca \
--disable-libfreetype \
--disable-libgsm \
--disable-libilbc \
--disable-libmp3lame \
--disable-libopencore-amrnb \
--disable-libopencore-amrwb \
--disable-libopenjpeg \
--disable-libopus \
--disable-librtmp \
--disable-libschroedinger \
--disable-libsoxr \
--disable-libspeex \
--disable-libtheora \
--disable-libtwolame \
--disable-libvo-aacenc \
--disable-libvo-amrwbenc \
--disable-libvorbis \
--disable-libvpx \
--disable-libxavs \
--disable-libxvid \
--disable-zlib \
--disable-yasm \
--enable-gpl \
--enable-version3 \
--enable-libx264 \
--enable-w32threads \
--enable-cross-compile \
--cross-prefix="/home/Administrator/mingw-w64-i686/bin/i686-w64-mingw32-" \
--target-os=mingw32 --arch=x86 \
--enable-memalign-hack \
--enable-ffplay 


确实可以编出来ffplay.exe,但是如果没有任何参数执行ffplay.exe没有任何提示,可能是SDL对printf做了什么处理。

可以参考这个http://bbs.chinavideo.org/forum.php?mod=viewthread&tid=6813


如果直接拖一个视频文件到ffplay.exe图标上,可以正常播放视频.



========================

pkg-config

$ PATH=/home/Administrator/mingw-w64-i686/bin:$PATH ./configure --prefix=/home/Administrator/dist --with-internal-glib CFLAGS="-march=i686"  --host=i686-w64-mingw32 CC=i686-w64-mingw32-gcc
可以使用上述命令来cross编译pkg-config.因为添加了--host=i686-w64-mingw32,所以还会安装一个i686-w64-ming32-pkg-config.exe


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以按照以下步骤来在Windows上使用MinGW编译FFmpeg: 1. 安装MinGW 首先需要安装MinGW,可以从官网下载安装包并进行安装。 2. 安装MSYS MSYS是提供了类Unix操作系统的环境,可以在Windows上使用类Unix的命令和工具。可以从官网下载MSYS安装包并进行安装。 3. 下载FFmpeg源代码 从FFmpeg官网下载最新的源代码。 4. 配置环境变量 将MinGW和MSYS的安装路径添加到系统环境变量中。 5. 进入MSYS的命令行界面 打开MSYS的命令行界面,进入FFmpeg源代码所在的目录。 6. 配置编译参数 运行以下命令来配置编译参数: ``` ./configure --enable-shared --disable-static --disable-doc --disable-ffplay --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-iconv --disable-bzlib --disable-zlib --prefix=/usr/local/ffmpeg ``` 这里的参数意义如下: - --enable-shared:编译生成共享库。 - --disable-static:禁止编译生成静态库。 - --disable-doc:禁止生成文档。 - --disable-ffplay:禁止编译生成ffplay播放器。 - --disable-ffmpeg:禁止编译生成ffmpeg命令行工具。 - --disable-ffprobe:禁止编译生成ffprobe工具。 - --disable-ffserver:禁止编译生成ffserver工具。 - --disable-iconv:禁止使用iconv编码转换库。 - --disable-bzlib:禁止使用bzlib库。 - --disable-zlib:禁止使用zlib库。 - --prefix=/usr/local/ffmpeg:指定安装目录。 7. 编译和安装 运行以下命令来编译和安装: ``` make && make install ``` 编译完成后,FFmpeg将会被安装到/usr/local/ffmpeg目录下。 以上就是在Windows上使用MinGW编译FFmpeg的步骤,希望对您有所帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值