Skip to content

Instantly share code, notes, and snippets.

@RangelReale
Last active September 7, 2023 12:56
Show Gist options
  • Star 22 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save RangelReale/3e6392289d8ba1a52b6e70cdd7e10282 to your computer and use it in GitHub Desktop.
Save RangelReale/3e6392289d8ba1a52b6e70cdd7e10282 to your computer and use it in GitHub Desktop.
How to compile ffmpeg + x264 using Visual Studio 2015
##### How to compile ffmpeg + x264 using Visual Studio 2015 #####
##### Building this way will make the DLLs compatible with SEH, so there will be no need to use /SAFESEH:NO when compiling your code #####
##### SOURCES:
### https://pracucci.com/compile-ffmpeg-on-windows-with-visual-studio-compiler.html
### https://gist.github.com/sailfish009/8d6761474f87c074703e187a2bc90bbc
### http://roxlu.com/2016/057/compiling-x264-on-windows-with-msvc
* Download "MSYS2 x86_64" from "http://msys2.github.io" and install into "C:\workspace\windows\msys64"
# pacman -S make gcc diffutils mingw-w64-{i686,x86_64}-pkg-config mingw-w64-i686-nasm mingw-w64-i686-yasm
* Rename C:\workspace\windows\msys64\usr\bin\link.exe to C:\workspace\windows\msys64\usr\bin\link_orig.exe, in order to use MSVC link.exe
===== 32 BITS BEGIN
* Run "VS2015 x86 Native Tools Command Prompt"
* Inside the command prompt, run:
# C:\workspace\windows\msys64\msys2_shell.cmd -mingw32 -use-full-path
===== 32 BITS END
===== 64 BITS BEGIN
* Run "VS2015 x64 Native Tools Command Prompt"
* Inside the command prompt, run:
# C:\workspace\windows\msys64\msys2_shell.cmd -mingw64 -use-full-path
===== 64 BITS END
### x264 ###
# git clone http://git.videolan.org/git/x264.git
# cd x264
# CC=cl ./configure --enable-static --prefix=/usr/local --disable-cli
# make
# make install
### ffmpeg ###
* Download sources from "http://www.ffmpeg.org/download.html"
# cd ffmpeg-3.3.2
# export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
===== 32 BITS BEGIN
# ./configure --toolchain=msvc --arch=x86 --enable-yasm --enable-asm --enable-shared --disable-static --disable-programs --enable-avresample --enable-libx264 --enable-gpl --prefix=./install
===== 32 BITS END
===== 64 BITS BEGIN
# ./configure --toolchain=msvc --arch=x86_64 --enable-yasm --enable-asm --enable-shared --disable-static --disable-programs --enable-avresample --enable-libx264 --enable-gpl --prefix=./install
===== 64 BITS END
# make
# make install
@yuanencao
Copy link

finally I got the issue fixed. there was a ffmpeg under msys64\usr\local\bin, so I just renamed it, and then the ffmpeg refers to thre correct path that is under /ffmpeg/output where I installed the build binaries. would someone explain or clarify why need to comment libx264.c code as below when build ffmpeg linking to static libx264?
#if defined(_MSC_VER)
#define X264_API_IMPORTS 1
#endif

@Wassimulator
Copy link

While configuring for ffmpeg i get the error that x264lib not found.

Same thing happened to me. How did you fix this?

Add two flags --extra-cflags=-I/usr/local/include --extra-ldflags=-LIBPATH:/usr/local/lib behind.

this doesn't work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment