jmac698
24th September 2011, 17:47
Update: rc5, Jan 12, 2012
Also includes links to new lame 3.99, and x264 latest stable
What's New?
http://code.google.com/p/ffmbc/
What is FFMBC?
It's a version of ffmpeg (a command line trancoding utility) with better support of professional formats like DNxHD or ProRES.
Compiling FFMBC
It's not easy to find binaries of this program for windows on the internet so you might have to compile it yourself.
About this Guide
This guide was successfully tested Oct 25, 2011 (and quickly retested on subsequent versions). If you read other guides on
the internet, you will find out of date instructions. For example, some
guides claim that pr is missing from the msys environment. It is now
included at C:\MinGW\msys\1.0\bin\pr.exe.
There are also some warnings about bash being ver. 2.04 which prevents the
configure script from working. This is no longer a problem. The bash
at this date was 3.1.17(1)-release (i686-pc-msys).
Tested on XPSP3 (32bit).
Also note that instructions for compiling ffmbc are similar to instructions for compiling ffmpeg.
Some compile options given on the internet are not needed;
--extra-cflags "-U__STRICT_ANSI__" is already the default, --enable-prostproc as well,
an option about --enable-nonfree is only needed by libfaac which is not enabled by default,
also note that avisynth support only requires a few files from windows, which are included with
mingw. GPL2 is the default.
Setting up the build environment on Windows
Get the mingw installer,
mingw-get-inst-20110802.exe from http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/
-Choose "Download latest repository catalogues"
-Check MinGW Developer Toolkit, C++ Compiler
It takes some time to download and update everything.
Open a command prompt (Start->All Programs->Accessories->Command Prompt in XP) and type:
set PATH=C:\MinGW\bin;%PATH%
set PATH=C:\MinGW\msys\1.0\bin;%PATH%
Start mingw prompt (Start->All Programs->MingW->MingW Shell) and type:
/postinstall/pi.sh
now answer the questions with the response in parentheses ():
Do you wish to continue with the post install? (y)
Do you have MinGW installed? (y)
Where is your MinGW installation? (C:\MinGW)
Do you wish for me to add mount bindings for C:MinGW to /mingw? (y)
--Next steps download some missing files needed to compile--
download http://www.tortall.net/projects/yasm/releases/yasm-1.1.0-win32.exe
and rename yasm-1.1.0-win32.exe to yasm.exe and place at C:\MinGW\bin
Note: If using Windows 2000, you need an older version of yasm.
download http://ftp.acc.umu.se/pub/gnome/binaries/win32/dependencies/pkg-config_0.25-1_win32.zip
unpack
copy bin\pkg-config.exe to C:\MinGW\bin
download http://ftp.acc.umu.se/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip
unpack, copy bin contents to C:\MinGW\bin
Make a copy of C:\MinGW\bin\libintl-8.dll then rename to intl.dll (this is required to run the downloaded pkg-config.exe).
--this is enough to finish running ./configure--
Note: If your build environment is already setup from a previous version build, you can start at this point.
Compiling your first FFMBC or a subsequent version with a working build environment
Download ffmbc: http://ffmbc.googlecode.com/files/FFmbc-0.7-rc5.tar.bz2
Place ffmbc source download at c:\
(FFmbc-0.7-rc5.tar.gz)
unpack.
From mingw shell,
cd /c/ffmbc-0.7-rc5
Option 1: To enable single binaries with no dll's, use:
configure --enable-gpl --enable-memalign-hack --enable-runtime-cpudetect --enable-avisynth
Option 2: To enable smaller exe's but with extra dll's use:
configure --enable-gpl --enable-memalign-hack --enable-runtime-cpudetect --enable-avisynth --enable-shared --disable-static
The last message you will see is
"Creating config.mak and config.h..." and a moment later you will be returned to the shell prompt.
Now type "make". It is normal to get a lot of warnings. A while later you will have your exe's and/or dll's and in c:\ffmbc-0.7-rc5. The versions named *_g have debugging info
and can be discarded.
For the shared version, you should also run these extra commands in the mingw shell:
strip -d libavcodec/avcodec-53.dll
strip -d libavdevice/avdevice-53.dll
strip -d libavfilter/avfilter-2.dll
strip -d libavformat/avformat-53.dll
strip -d libavutil/avutil-51.dll
strip -d libpostproc/postproc-51.dll
strip -d libswscale/swscale-2.dll
This will reduce the size of the dll's. For the shared version, these dll's must be in the same directory as ffmbc.exe (or somewhere in your path, type SET in the normal command prompt to view.)
Gathering your files
In order to run the shared library version you need all the dll's above in your path, and for both versions (by default) you need C:\MinGW\bin\pthreadGC2.dll in the same directory or elsewhere in the path.
Compiling the missing features
The options after configure matter; these enable various features. If you want some of the missing features, you have to install some extra source code for those packages as well. --enable-nonfree is needed by libfaac. ffmbc is GPL2 only.
Source code available from:
http://ffmbc.googlecode.com/files/FFmbc-0.7-rc5.tar.bz2
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2
http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.tar.gz/download
svn checkout http://openjpeg.googlecode.com/svn/trunk/ openjpeg
All of the options can be found by running configure --help in the mingw
shell.
The features in this compile
The resulting binary as built above does have .avs (avisynth) input support and does support 10bit pro formats. Using rawsource you can easily import 10bit video into avisynth as well.
Binaries
configure --enable-gpl --enable-memalign-hack --enable-runtime-cpudetect --enable-avisynth --enable-shared --disable-static
http://www.sendspace.com/file/8r29zc
ffmbc-0.7-rc5
http://www.sendspace.com/file/r68cmd
ffmbc-0.7-rc4
http://www.sendspace.com/file/dvxa21
ffmbc-0.7-rc3
http://www.sendspace.com/file/1vqd8e
ffmbc-0.7-rc2
http://www.sendspace.com/file/ck4n0u
ffmbc-0.7-rc1
Related Topics
Up-to-date binaries of ffmpeg, and script to create build environment for mingw which can compile ffmpeg (cross compiling on Ubuntu)
http://ffmpeg.zeranoe.com/builds/
http://ffmpeg.zeranoe.com/blog/
Other binaries of ffmbc, with x264 and 64bit versions (but not rc5 yet as of now)
http://www.mediafire.com/?8xynxe10rxb88
http://avisynth.org/mediawiki/High_bit-depth_Support_with_Avisynth
Compiling LAME
This is a new guide, to compile LAME which is in support of enabling lame for ffmbc.
Download the lame 3.99 sourcecode (link above). Unpack. Open the mingw32 shell. Type:
cd /c/lame-3.99
configure
make
You can now find C:\lame-3.99\libmp3lame\.libs\libmp3lame-0.dll and C:\lame-3.99\frontend\lame.exe
Compiling x264
Download the latest stable x264 sourcecode (link above). Unpack. Open the mingw32 shell. Type:
cd /c/{insert your sourcecode path here}
configure
make
You can now find x264.exe in the build directory. You need pthreadGC2.dll in your path to run it.
Compiling ffmbc with x264 and lame
*Not fully tested*
Compile x264 and lame as above, create these directories:
C:\MinGW\msys\1.0\local\
C:\MinGW\msys\1.0\local\lib\
C:\MinGW\msys\1.0\local\include\
C:\MinGW\msys\1.0\local\include\lame\
then copy these files:
last_stable_x264\libx264.a -> C:\MinGW\msys\1.0\local\lib\
lame-3.99\libmp3lame\.libs\libmp3lame.a -> C:\MinGW\msys\1.0\local\lib\
last_stable_x264\x264.h, x264_config.h -> C:\MinGW\msys\1.0\local\include\
lame-3.99\include\lame.h -> C:\MinGW\msys\1.0\local\include\lame\
Now build with
configure --enable-gpl --enable-memalign-hack --enable-runtime-cpudetect --enable-avisynth --enable-nonfree --enable-libx264 --enable-libmp3lame --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib
This builds, but not sure if it works. It's the dynamic version.
Keywords
build ffmpeg build ffmbc compile ffmpeg compile ffmbc how to make windows binaries of ffmbc windows compile of ffmbc win32 latest ffmbc
Also includes links to new lame 3.99, and x264 latest stable
What's New?
http://code.google.com/p/ffmbc/
What is FFMBC?
It's a version of ffmpeg (a command line trancoding utility) with better support of professional formats like DNxHD or ProRES.
Compiling FFMBC
It's not easy to find binaries of this program for windows on the internet so you might have to compile it yourself.
About this Guide
This guide was successfully tested Oct 25, 2011 (and quickly retested on subsequent versions). If you read other guides on
the internet, you will find out of date instructions. For example, some
guides claim that pr is missing from the msys environment. It is now
included at C:\MinGW\msys\1.0\bin\pr.exe.
There are also some warnings about bash being ver. 2.04 which prevents the
configure script from working. This is no longer a problem. The bash
at this date was 3.1.17(1)-release (i686-pc-msys).
Tested on XPSP3 (32bit).
Also note that instructions for compiling ffmbc are similar to instructions for compiling ffmpeg.
Some compile options given on the internet are not needed;
--extra-cflags "-U__STRICT_ANSI__" is already the default, --enable-prostproc as well,
an option about --enable-nonfree is only needed by libfaac which is not enabled by default,
also note that avisynth support only requires a few files from windows, which are included with
mingw. GPL2 is the default.
Setting up the build environment on Windows
Get the mingw installer,
mingw-get-inst-20110802.exe from http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/
-Choose "Download latest repository catalogues"
-Check MinGW Developer Toolkit, C++ Compiler
It takes some time to download and update everything.
Open a command prompt (Start->All Programs->Accessories->Command Prompt in XP) and type:
set PATH=C:\MinGW\bin;%PATH%
set PATH=C:\MinGW\msys\1.0\bin;%PATH%
Start mingw prompt (Start->All Programs->MingW->MingW Shell) and type:
/postinstall/pi.sh
now answer the questions with the response in parentheses ():
Do you wish to continue with the post install? (y)
Do you have MinGW installed? (y)
Where is your MinGW installation? (C:\MinGW)
Do you wish for me to add mount bindings for C:MinGW to /mingw? (y)
--Next steps download some missing files needed to compile--
download http://www.tortall.net/projects/yasm/releases/yasm-1.1.0-win32.exe
and rename yasm-1.1.0-win32.exe to yasm.exe and place at C:\MinGW\bin
Note: If using Windows 2000, you need an older version of yasm.
download http://ftp.acc.umu.se/pub/gnome/binaries/win32/dependencies/pkg-config_0.25-1_win32.zip
unpack
copy bin\pkg-config.exe to C:\MinGW\bin
download http://ftp.acc.umu.se/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip
unpack, copy bin contents to C:\MinGW\bin
Make a copy of C:\MinGW\bin\libintl-8.dll then rename to intl.dll (this is required to run the downloaded pkg-config.exe).
--this is enough to finish running ./configure--
Note: If your build environment is already setup from a previous version build, you can start at this point.
Compiling your first FFMBC or a subsequent version with a working build environment
Download ffmbc: http://ffmbc.googlecode.com/files/FFmbc-0.7-rc5.tar.bz2
Place ffmbc source download at c:\
(FFmbc-0.7-rc5.tar.gz)
unpack.
From mingw shell,
cd /c/ffmbc-0.7-rc5
Option 1: To enable single binaries with no dll's, use:
configure --enable-gpl --enable-memalign-hack --enable-runtime-cpudetect --enable-avisynth
Option 2: To enable smaller exe's but with extra dll's use:
configure --enable-gpl --enable-memalign-hack --enable-runtime-cpudetect --enable-avisynth --enable-shared --disable-static
The last message you will see is
"Creating config.mak and config.h..." and a moment later you will be returned to the shell prompt.
Now type "make". It is normal to get a lot of warnings. A while later you will have your exe's and/or dll's and in c:\ffmbc-0.7-rc5. The versions named *_g have debugging info
and can be discarded.
For the shared version, you should also run these extra commands in the mingw shell:
strip -d libavcodec/avcodec-53.dll
strip -d libavdevice/avdevice-53.dll
strip -d libavfilter/avfilter-2.dll
strip -d libavformat/avformat-53.dll
strip -d libavutil/avutil-51.dll
strip -d libpostproc/postproc-51.dll
strip -d libswscale/swscale-2.dll
This will reduce the size of the dll's. For the shared version, these dll's must be in the same directory as ffmbc.exe (or somewhere in your path, type SET in the normal command prompt to view.)
Gathering your files
In order to run the shared library version you need all the dll's above in your path, and for both versions (by default) you need C:\MinGW\bin\pthreadGC2.dll in the same directory or elsewhere in the path.
Compiling the missing features
The options after configure matter; these enable various features. If you want some of the missing features, you have to install some extra source code for those packages as well. --enable-nonfree is needed by libfaac. ffmbc is GPL2 only.
Source code available from:
http://ffmbc.googlecode.com/files/FFmbc-0.7-rc5.tar.bz2
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2
http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.tar.gz/download
svn checkout http://openjpeg.googlecode.com/svn/trunk/ openjpeg
All of the options can be found by running configure --help in the mingw
shell.
The features in this compile
The resulting binary as built above does have .avs (avisynth) input support and does support 10bit pro formats. Using rawsource you can easily import 10bit video into avisynth as well.
Binaries
configure --enable-gpl --enable-memalign-hack --enable-runtime-cpudetect --enable-avisynth --enable-shared --disable-static
http://www.sendspace.com/file/8r29zc
ffmbc-0.7-rc5
http://www.sendspace.com/file/r68cmd
ffmbc-0.7-rc4
http://www.sendspace.com/file/dvxa21
ffmbc-0.7-rc3
http://www.sendspace.com/file/1vqd8e
ffmbc-0.7-rc2
http://www.sendspace.com/file/ck4n0u
ffmbc-0.7-rc1
Related Topics
Up-to-date binaries of ffmpeg, and script to create build environment for mingw which can compile ffmpeg (cross compiling on Ubuntu)
http://ffmpeg.zeranoe.com/builds/
http://ffmpeg.zeranoe.com/blog/
Other binaries of ffmbc, with x264 and 64bit versions (but not rc5 yet as of now)
http://www.mediafire.com/?8xynxe10rxb88
http://avisynth.org/mediawiki/High_bit-depth_Support_with_Avisynth
Compiling LAME
This is a new guide, to compile LAME which is in support of enabling lame for ffmbc.
Download the lame 3.99 sourcecode (link above). Unpack. Open the mingw32 shell. Type:
cd /c/lame-3.99
configure
make
You can now find C:\lame-3.99\libmp3lame\.libs\libmp3lame-0.dll and C:\lame-3.99\frontend\lame.exe
Compiling x264
Download the latest stable x264 sourcecode (link above). Unpack. Open the mingw32 shell. Type:
cd /c/{insert your sourcecode path here}
configure
make
You can now find x264.exe in the build directory. You need pthreadGC2.dll in your path to run it.
Compiling ffmbc with x264 and lame
*Not fully tested*
Compile x264 and lame as above, create these directories:
C:\MinGW\msys\1.0\local\
C:\MinGW\msys\1.0\local\lib\
C:\MinGW\msys\1.0\local\include\
C:\MinGW\msys\1.0\local\include\lame\
then copy these files:
last_stable_x264\libx264.a -> C:\MinGW\msys\1.0\local\lib\
lame-3.99\libmp3lame\.libs\libmp3lame.a -> C:\MinGW\msys\1.0\local\lib\
last_stable_x264\x264.h, x264_config.h -> C:\MinGW\msys\1.0\local\include\
lame-3.99\include\lame.h -> C:\MinGW\msys\1.0\local\include\lame\
Now build with
configure --enable-gpl --enable-memalign-hack --enable-runtime-cpudetect --enable-avisynth --enable-nonfree --enable-libx264 --enable-libmp3lame --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib
This builds, but not sure if it works. It's the dynamic version.
Keywords
build ffmpeg build ffmbc compile ffmpeg compile ffmbc how to make windows binaries of ffmbc windows compile of ffmbc win32 latest ffmbc