ffmpeg交叉编译

Intro

Basically, cross compiling FFmpeg for windows means that you use a special version of the gcc compiler (and related tools) that output a working windows executable when they're done. You can copy it to your windows box and then use it (or use wine to run it under linux, but that kind of defeats the point).

This is sometimes easier than using a "native" compilation in windows because some dependencies' configure scripts accept a cross compiler more readily than a native windows mingw gcc, etc. It also may be "faster" than using mingw's gcc in windows, for whatever reason gcc seems faster in linux.

Most cross compilation are done under Linux, but it is possible to us OS X as a host machine.

Automated cross compiling environment

Some building environments aim to automatically build the cross compilers and dependencies of FFmpeg. By using these projects you can eliminate the mess of building toolchains yourself. These projects include MXE and Win-builds.

MXE is more feature-complete as of Dec 2013, as

  • it has more dependencies for FFmpeg (x264, xvid, etc.)
  • it has a ffmpeg package (by default it is libraries-only, but users are able to generate the programs to by simply deleting one line in the building recipe)
  • it supports OS X as a host machine
  • it supports MinGW in addition to mingw-w64.

Win-builds as the official package manager for mingw-w64, is really new, and it does not have as many multimedia packages as MXE.

Cross Compiler

Zeranoe has a script for compiling your own windows cross compiler, then you can use it to compile ffmpeg and its libs. NB that it can be a little tricky, you could try using this scriptwhich attempts to automated building the cross compiler and gcc.

Another option is that some linux distros have packages like mingw-w64-dev or gcc-mingw-w64-i686 which might also get a working local cross compiler system. Basically, they'll add x86_64-w64-mingw32-gcc to a directory or to the PATH somehow. And you're ready to go.

Compile dependencies

Next cross compile any added dependencies you may want, for instead libx264.

The script "cross_compile_ffmpeg.sh" in this repository lists many dependencies.

Compile FFmpeg

Now basically configure and compile FFmpeg like

$ ./configure --arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32- --pkg-config=pkg-config
$ make

and other options if you want them, like --enable-libx264, etc.

This should eventually create the file ffmpeg_g.exe (ffmpeg.exe with debug symbols) and ffmpeg.exe (ffmpeg.exe "stripped" of its debug symbols). If you cross compile SDL before hand, it will also include ffplay.exe

Resources

This repository has a script that compiles the cross compiler locally

You can ask questions on the Zeranoe Forum.



https://trac.ffmpeg.org/wiki/CompilationGuide/CrossCompilingForWindows

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值