The real answer is probably "no", but still, just to double check.
Has anyone ever been able to build ffmpeg x64 on Windows (VS2013 or VS2015)? I know it is not possible with publicly available sources without heavy modifications. However, if somebody did it and if he is willing to share a few tips...
Edit:
It is interesting how most of the required x64 tools for running the "configure" are distributed without dependencies and it is impossible to get them anywhere. Looks like a professional trolling.
Edit2:
There are thousands of errors like this:
fatal error C1083: Cannot open include file: 'features.h': No such file or directory
features.h is missing as many other header files. Is there a fix for that, or switching to Linux is the only option?
No, it cannot be done. MS compiler doesn't support #include_next. Plus, many other problems... You need MinGW.
I used to compile ffmpeg on a linux machine with MinGW, but now I'm able to compile on a windows machine, in my case Windows 10.
NOTE:
For me it only worked for ffmpeg versions >= 3.0 and I tested using VS 2013 and 2015
Few steps but very important:
Download and install (except YASM):
- Visual Studio 2013 or 2015
- YASM
- MSYS2
Steps:
- Install MSYS2 to a fixed folder (eg.: C:\Dev\msys64)
- Run msys2.exe
- Execute command "pacman -S make gcc diffutils" and press "Y" to install
- Close msys2
- Rename C:\Dev\msys64\usr\bin\link.exe to some other name (eg.: msys2_link.exe)
- Copy and rename "yasm--win64.exe" to "C:\Dev\yasm.exe"
- Add "C:\Dev" to environment variables PATH
- Run VS2013/2015 x86 (for x86) or x64 for (x64) Command Prompt
- Execute "C:\Dev\msys64\msys2_shell.cmd -msys -use-full-path"
- On the msys2 window execute "which cl" and you should see the path of your VS
- Execute "which link" and you should also see the path of your VS
- Go to the ffmpeg source path (eg.: "cd /c/ffmpeg3.3")
- Run ./configure and make
I use this configuration:
./configure \
--toolchain=msvc \
--arch=x86_64 \
--enable-yasm \
--enable-asm\
--enable-shared \
--enable-w32threads \
--disable-programs \
--disable-ffserver \
--disable-doc \
--disable-static \
--prefix=/c/ffmpeg3.3/DLLS
NOTE2:
If you used the last line --prefix=/c/ffmpeg3.3/DLLS, as a final step, run make install and the binaries will be copied to that path
Hope it helped.
Best of luck
Assuming with x64 you mean the standard 64-bit version, yes it is possible. See the fate page for all tested builds of FFmpeg, there's various 32- and 64-bit versions of Visual Studio in that list, including VS2013 and VS2015 64-bit. Search for "Microsoft (R) C/C++ Optimizing Compiler Version 18.00.40629 for x64" (or "19.00.24215.1") or "VS2013"/"VS2015", all the way at the bottom. For exact build options, see here for 2013 or here for 2015. The important part is to open a Windows shell with the 64-bit commandline build tools in your $PATH
and open a msys shell from there, and then run configure
using the --arch=x86_64 --target-os=win64 --toolchain=msvc
options. For more detail, see the MSVC compilation wiki page.
There is a How-to on the FFmpeg Page itself.It didn't work for me so far, but at least you should get rid of the C99 Errors and so on.
https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC
Maybe you try installing this stuff (I had to download pkg-config seperatly with Msys2 for it to work) and follow these steps.