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 as well.
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).
Also "windows 10 bash" can do cross compilation as well.
Note that cross-compiling is sometimes easier than using a "native" compilation under 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 `gcc` under Windows.
'''Tip:''' The [https://github.com/rdp/ffmpeg-windows-build-helpers FFmpeg Windows Build Helpers] script can automatically cross-compile FFmpeg for Windows. You can still follow this guide if you want to manually compile FFmpeg.
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 [http://mxe.cc MXE] and [http://win-builds.org Win-builds].
* 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.
Some Linux distros have packages like `mingw-w64-dev` or `gcc-mingw-w64-i686` which might also get a working local cross compiler system. They'll add `x86_64-w64-mingw32-gcc` to your `PATH` and you're ready to go.
Next cross compile any added dependencies you may want, for instead libx264.
The script "cross_compile_ffmpeg.sh" in [https://github.com/rdp/ffmpeg-windows-build-helpers this repository] lists many dependencies.
and other options if you want them, like --enable-libx264, etc.
and other options if you want them, like `--enable-libx264`, etc. if you have these dependencies cross-compiled as well.
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 beforehand, it will also include `ffplay.exe`.
You can ask questions on the [http://ffmpeg.zeranoe.com/forum/ Zeranoe Forum].