Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Programming and Hacking > Development
Register FAQ Calendar Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
Old 24th September 2011, 17:47   #1  |  Link
jmac698
Registered User
 
Join Date: Jan 2006
Posts: 1,867
How to compile FFMBC on Windows

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/ming...ingw-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....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/bina...25-1_win32.zip
unpack
copy bin\pkg-config.exe to C:\MinGW\bin

download http://ftp.acc.umu.se/pub/gnome/bina....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/...e_x264.tar.bz2
http://sourceforge.net/projects/lame...ar.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_b..._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

Last edited by jmac698; 15th January 2012 at 19:15. Reason: updated
jmac698 is offline   Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 00:02.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.