Hunter Ford

Senior Systems/Software Engineer

Compiling FFMpeg on Mac OS X

You must have Xcode installed with Unix Tools. Xcode 3 is available for free via Apple Developer Center. However, Xcode 4 is available through the App Store (free for Lion users).

# Create a temporary directory for sources.
SOURCES=$(mktemp -d /tmp/XXXXXXXXXX)
cd $SOURCES

# Download the necessary sources.
curl -#LO http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz
curl -#LO http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.tar.gz
curl -#LO http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz
curl -#LO http://pkg-config.freedesktop.org/releases/pkg-config-0.25.tar.gz
curl -#LO http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.gz
curl -#LO http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
# curl -#LO http://downloads.sourceforge.net/project/opencore-amr/vo-amrwbenc/vo-amrwbenc-0.1.1.tar.gz
curl -#LO http://www.tortall.net/projects/yasm/releases/yasm-1.1.0.tar.gz
curl -#LO http://webm.googlecode.com/files/libvpx-v0.9.7-p1.tar.bz2
curl -#LO ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
curl -#LO http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
# curl -#LG -d "p=ffmpeg.git;a=snapshot;h=HEAD;sf=tgz" -o ffmpeg.tar.gz http://git.videolan.org/
curl -#LO http://ffmpeg.org/releases/ffmpeg-0.8.5.tar.bz2

# Unpack files
for file in `ls ${SOURCES}/*.tar.*`; do
    tar -xzf $file
    rm $file
done

cd faac-*/
CFLAGS="-D__unix__" ./configure && make -j 4 && sudo make install; cd ..

cd lame-*/
./configure && make -j 4 && sudo make install; cd ..

cd libogg-*/
./configure && make -j 4 && sudo make install; cd ..

cd pkg-config-*/
./configure && make -j 4 && sudo make install; cd ..

cd libvorbis-*/
./configure --disable-oggtest --build=x86_64 && make -j 4 && sudo make install; cd ..

cd libtheora-*/
./configure --disable-oggtest --disable-vorbistest --disable-examples --disable-asm
make -j 4 && sudo make install; cd ..

# cd vo-amrwbenc-*/
# ./configure && make -j 4 && sudo make install; cd ..

cd yasm-*/
./configure && make -j 4 && sudo make install; cd ..

cd libvpx-*/
./configure --enable-vp8 --enable-pic && make -j 4 && sudo make install; cd ..

cd x264-*
CFLAGS="-I. -fno-common -read_only_relocs suppress" ./configure --enable-pic --enable-shared && make -j 4 && sudo make install; cd ..

cd xvidcore/build/generic
./configure --disable-assembly && make -j 4 && sudo make install; cd ../../..

# For Lion, we have to change which compiler to use (--cc=clang).
# If you're building on Snow Leopard, you can omit this flag so it defaults to gcc.
cd ffmpeg-*/
CFLAGS="-DHAVE_LRINTF" ./configure --enable-nonfree --enable-gpl --enable-version3 --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libfaac --enable-libxvid --enable-libx264 --enable-libvpx --enable-hardcoded-tables --enable-shared --enable-pthreads --disable-indevs --cc=clang && make -j 4 && sudo make install

# --enable-libvo-amrwbenc

# FFMpeg creates MP4s that have the metadata at the end of the file.
# This tool moves it to the beginning.
cd tools
gcc -D_LARGEFILE_SOURCE qt-faststart.c -o qt-faststart
sudo mv qt-faststart /usr/local/bin

Downloads

Comments

Brandon

Hunter, I've updated your download links to their latest versions: https://gist.github.com/brandongalbraith/5400316

Mark Fleming

I also need to update to version 1.20 curl -#LO http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz and then it worked well in 10.8.2 one line I would add is: ls /usr/local/lib at the end of the script for check if all was install correctly. and display $Source folder if user needs to trouble shoot it. Thank you Mark

Brent

x264 said it needed at least yasm-1.2.0. So I used that one instead and it worked! Thank you for putting this together.

Andreas Westh

Good job! Works as intended on 10.7.4

Seereen

I think I installed this perfectly in my mac with OS 10.7.4 .... now I am trying to build this program in this link http://dranger.com/ffmpeg/tutorial01.html but I got many errors !!!! Do you know where is the problems ! ... in the OS or in this code ... or the version of ffmpeg !!! Thanks in advance

Esteban

Works perfect on 10.7.4

Darrel Hunt

I was wondering if anyone has an ffmpeg binary w/faac compiled already they could send me.

Yakumo Fuji

Hi, I had a lite trouble with this script such as that yasm did not want to download so I found an alternate site to download version 1.2 from. Also the script did not unpack .tar.bz2 packages for me so I changed that so it is working. Here is an updated link to the install script. http://pastebin.com/CVRRBtaC

mpsrig

Hey, great post, thanks for the tip about the --cc=clang on Lion. I was wondering why this is necessary vs. gcc? Thanks?

Dimitar Dimitrov

Unfortunately I'm getting "ERROR: libxvid not found". libxvidcore.a is in /usr/local/lib, xvid.h is in /usr/local/include, but I'm still getting this. Any suggestions?

Julio Aguirre

After several hours of internet search about the error in liborvis not found error i found the fix. The problem is that the configure param of liborbis must be ./configure --build=x86_6 That fix the problem for me. Usign lion 10.7.2 In this site i put the updated script code to include the latest version of all codecs as octber 31 2011. http://pastebin.com/VBQRYQcG

Niklas Br

Thanks for sharing Hunter, but I have the same error as Jason and after digging in the libvorbis make code for two hours I am no closer to solving this. See log at http://pastebin.com/8mzZwN1j

Jason

the libvorbis step does not work for me. checking for OGG... no checking for Ogg... yes checking for oggpack_writealign... no configure: error: Ogg >= 1.0 required ! I am doing: ./configure --disable-oggtest && make -j 4 && sudo make install; cd .. anyone have any idea how to fix?

Glenn

Hunter responded to my above post via email so I thought I would share with anyone else that might be having issues. Download the above script and just replace the "cd ffmpeg..." line with: cd ffmpeg-*/; CFLAGS="-DHAVE_LRINTF" ./configure --cc=clang --enable-nonfree --enable-gpl --enable-version3 --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libfaac --enable-libxvid --enable-libx264 --enable-libvpx --enable-libvo-amrwbenc --enable-shared --enable-pthreads --disable-indevs The only change was adding --cc=clang just after configure. This successfully compiled on Lion with Xcode 4.

Glenn

The Lion update seems to have broken the script. Any chance of getting an update for OS X Lion? It would be much appreciated.

dezza

Thanks so much for posting this. It worked perfectly for me on 10.6.7.

Eric Pardee

Great post Hunter, much appreciated. This worked perfectly on my OS X 10.6.7. Saved me a tremendous amount of time by not having to deal with all the OS X compatibility issues for each library or learn the configure flags. Please contact me if you're interested in freelance work in television post-production.

Hunter Ford

I'm glad it worked for you! Thanks for pointing out my typo; it's been fixed!

JTDS

Great work, this is exactly what I was looking for! But watch the Freudian typo "CLFAGS" in line 36 ;o) At first the script crashed for me, because curl wouldn't load the x264 bundle via FTP, so I downloaded it from VideoLAN's Mac-ish site: http://www.videolan.org/developers/x264.html In the end, all compiled and installed beautifully using XCode 3.2.6 on a MacBook Core 2 Duo running 10.6.7 Snow Leopard. Works great for the .mpeg to .flv conversions I needed. Thanks!