This guide shows how to build ffmpeg, libav, mplayer/mencoder and mpv binaries on MacOSX.
See the bottom of this post for a revision history.
What you need before you start:
- Xcode
- Some patience
- Some experience in using a command line interface
Miscellaneous:
- yasm-1.3.0.tar.gz
- zlib-1.2.8.tar.gz
- bzip2-1.0.6.tar.gz
- git-2.10.0
- pkg-config-0.29.1.tar.gz
- cmake-3.6.1.tar.gz
- libressl-2.4.2.tar.gz
Encoder/decoder media libraries:
- lame-3.99.5.tar.gz
- faad2-2.7.tar.bz2
- faac-1.28.tar.bz2
- xvidcore-1.3.4.tar.gz
- last_stable_x264.tar.bz2
- libogg-1.3.2.tar.gz
- libvorbis-1.3.5.tar.gz
- libtheora-1.1.1.tar.bz2
- gsm-1.0.13.tar.gz
- amrwb-11.0.0.0.tar.bz2
- amrnb-11.0.0.0.tar.bz2
- speex-1.2rc2.tar.gz
- flac-1.3.0.tar.gz
- libxavs (via subversion)
- vo-aacenc-0.1.3.tar.gz
- vo-amrwbenc-0.1.3.tar.gz
- libvpx-v1.1.0.tar.bz2
- opus-1.1.3.tar.gz
- twolame-0.3.13.tar.gz
- openal-soft-1.13.tar.bz2
- soxr-0.1.1-Source.tar.gz
- fdk-aac-0.1.3.tar.gz
- libutvideo (via git)
- wavpack-4.70.0.tar.bz2
- zeromq-4.1.5.tar.gz
- georgmartius-vid.stab-release-0.98a-0-g94a4692.tar.gz
- libilbc (via git)
- libx265 (via hg)
- snappy 1.1.3
Encoder/decoder media programs:
- ffmpeg
- libav
- mplayer
- mpv
Trying to compile versions obtained directly from the repositories may or may not break or require different configure flags. You can always try and using the stable release source code which should not require too many changes to the configure options. This guide was written with MacOSX 10.6.x and Xcode 3.x in mind, for compiling on newer MacOSX/Xcode versions see compilation notes at the bottom of this posting.
Create the Ramdisk
VOLNAME=Ramdisk DISK_ID=$(hdid -nomount ram://26214400) newfs_hfs -v ${VOLNAME} ${DISK_ID} diskutil mount ${DISK_ID}
Create some shortcuts
export MES=/Users/snowy/tmptmp/mediaencoding/base/ export TARGET="/Volumes/${VOLNAME}/" export CMPL="/Volumes/${VOLNAME}/compile" export PATH=${TARGET}/bin:$PATH mkdir ${CMPL}
Building libressl
cd ${CMPL} tar xzpf ${MES}/libressl-2.4.2.tar.gz cd libressl-2.4.2 ./configure --prefix=${TARGET} --enable-static --disable-shared make -j 2 && make install
Building yasm
cd ${CMPL} tar xzpf ${MES}/yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure --prefix=${TARGET} make -j 2 && make install
Building pkg-config
cd ${CMPL} tar xzpf ${MES}/pkg-config-0.29..1.tar.gz cd pkg-config-0.29.1 ./configure --prefix=${TARGET} --with-pc-path=${TARGET}/lib/pkgconfig --with-internal-glib make -j 2 && make install
Building git
cd ${CMPL} curl -O https://www.kernel.org/pub/software/scm/git/git-2.10.4.tar.gz tar xzpf git-2.10.0.tar.gz cd git-2.10.0 ./configure --prefix=${TARGET}/git make && make install PATH=${TARGET}/git/bin:$PATH
Building lame
cd ${CMPL} tar xzpf ${MES}/lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install
Building faad
cd ${CMPL} tar xjpf ${MES}/faad2-2.7.tar.bz2 cd faad2-2.7 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install
Building faac
cd ${CMPL} tar xjpf ${MES}/faac-1.28.tar.bz2 cd faac-1.28 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install
Building xvidcore (and removing the dynamic library)
cd ${CMPL} tar xzpf ${MES}/xvidcore-1.3.4.tar.gz cd xvidcore cd build/generic ./configure --prefix=${TARGET} make -j 2 && make install rm ${TARGET}/lib/libxvidcore.4.dylib
Building x264
cd ${CMPL} curl -O ftp://ftp.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2 tar xjpf last_stable_x264.tar.bz2 cd x264*stable ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install && make install-lib-static
Building ogg
cd ${CMPL} tar xzpf ${MES}/libogg-1.3.2.tar.gz cd libogg-1.3.2 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install
Building vorbis
cd ${CMPL} tar xzpf ${MES}/libvorbis-1.3.5.tar.gz cd libvorbis-1.3.5 ./configure --prefix=${TARGET} --with-ogg-libraries=${TARGET}/lib --with-ogg-includes=${TARGET}/include/ --enable-static --disable-shared make -j 2 && make install
Building theora
cd ${CMPL} tar xjpf ${MES}/libtheora-1.1.1.tar.bz2 cd libtheora-1.1.1 ./configure --prefix=${TARGET} --disable-asm --with-ogg-libraries=${TARGET}/lib --with-ogg-includes=${TARGET}/include/ --with-vorbis-libraries=${TARGET}/lib --with-vorbis-includes=${TARGET}/include/ --enable-static --disable-shared make -j 2 && make install
Building libopus
cd ${CMPL} tar xjpf ${MES}/opus-1.1.3.tar.gz cd opus-1.1.3 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install
Building gsm
cd ${CMPL} tar xzpf ${MES}/gsm-1.0.13.tar.gz cd gsm-1.0-pl13 mkdir -p ${TARGET}/man/man3 mkdir -p ${TARGET}/man/man1 mkdir -p ${TARGET}/include/gsm perl -p -i -e "s#^INSTALL_ROOT.*#INSTALL_ROOT = $TARGET#g" Makefile perl -p -i -e "s#_ROOT\)/inc#_ROOT\)/include#g" Makefile sed "/GSM_INSTALL_INC/s/include/include\/gsm/g" Makefile > Makefile.new mv Makefile.new Makefile make -j 2 && make install
Building amrwb (downloads additional sources)
cd ${CMPL} tar xjpf ${MES}/amrwb-11.0.0.0.tar.bz2 cd amrwb-11.0.0.0 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install
Building amrnb (downloads additional sources)
cd ${CMPL} tar xjpf ${MES}/amrnb-11.0.0.0.tar.bz2 cd amrnb-11.0.0.0 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install
Building speex
cd ${CMPL} tar xzpf ${MES}/speex-1.2rc2.tar.gz cd speex-1.2rc2 ./configure --prefix=${TARGET} --with-ogg-libraries=${TARGET}/lib --with-ogg-includes=${TARGET}/include/ --enable-static --disable-shared make -j 2 && make install
Building flac
cd ${CMPL} tar xzpf ${MES}/flac-1.3.0.tar.gz cd flac-1.3.0 ./configure --prefix=${TARGET} --disable-asm-optimizations --disable-xmms-plugin --with-ogg-libraries=${TARGET}/lib --with-ogg-includes=${TARGET}/include/ --enable-static --disable-shared make -j 2 && make install
Building xavs
cd ${CMPL} svn co https://svn.code.sf.net/p/xavs/code/ xavs ./configure --prefix=${TARGET} --disable-asm make -j 2 && make install
Building libsnappy
cd ${CMPL} tar xzpf ${MES}/snappy-1.1.3.tar.gz cd snappy-1.1.3 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j2 && make install
Building vo-amrwbenc
cd ${CMPL} tar xzpf ${MES}/vo-amrwbenc-0.1.3.tar.gz cd vo-amrwbenc-0.1.3 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install
Building libvpx
cd ${CMPL} tar xjpf libvpx-v1.1.0.tar.bz2 cd libvpx-v1.1.0 ./configure --prefix=${TARGET} --as=yasm --disable-shared --enable-static --enable-vp8 make -j 2 && make install
Building fdk-aac
cd ${CMPL} tar xzpf ${MES}/fdk-aac-0.1.4.tar.gz cd fdk-aac-0.1.4 ./configure --prefix=${TARGET} --enable-static --disable-shared make -j 2 && make install
Building twolame
cd ${CMPL} tar xzpf ${MES}/twolame-0.3.13.tar.gz cd twolame-0.3.13 ./configure --prefix=${TARGET} --disable-shared --enable-static make -j 2 && make install
Building libutvideo
cd ${CMPL} git clone https://github.com/qyot27/libutvideo cd libutvideo ./configure --prefix=${TARGET} make -j 2 && make install
Building wav pack
cd ${CMPL} tar xjpf ${MES}/wavpack-4.70.0.tar.bz2 cd wavpack-4.60.1 ./configure --prefix=${TARGET} --enable-static --disable-shared make -j 2 && make install
Building zeromq
cd ${CMPL} tar xzpf ${MES}/zeromq-4.1.5.tar.gz cd zeromq-4.1.5 ./configure --without-documentation --prefix=${TARGET} --enable-static --disable-shared make -j 2 && make install
Building cmake
cd ${CMPL} tar xzpf ${MES}/cmake-3.6.1.tar.gz cd cmake-3.6.1 # Patch out Java for cmake rm Modules/FindJava.cmake sed "s/get_filename_component.JNIPATH/#get_filename_component(JNIPATH/g" Tests/CMakeLists.txt > Tests/CMakeLists.txt.new mv Tests/CMakeLists.txt.new Tests/CMakeLists.txt ./configure --prefix=${TARGET} make -j 2 && make install
Building OpenAL
cd ${CMPL} tar xjpf ${MES}/openal-soft-1.13.tar.bz2 cd openal-soft-1.13 cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DLIBTYPE=STATIC . make -j 2 && make install
Building libsoxr
cd ${CMPL} tar xzpf ${MES}/soxr-0.1.1-Source.tar.gz cd soxr-0.1.1-Source cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DBUILD_SHARED_LIBS=OFF . make -j 2 && make install
Building libvidstab
cd ${CMPL} tar xzpf ${MES}/georgmartius-vid.stab-release-0.98a-0-g94a4692.tar.gz cd georgmartius-vid.stab-release* perl -p -i -e 's/vidstab SHARED/vidstab STATIC/' CMakeLists.txt cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} . make -j 2 && make install
Building libilbc
cd ${CMPL} git clone https://github.com/dekkers/libilbc.git cd libilbc sed '/TARGETS/s/ ilbc / /' CMakeLists.txt >CMakeLists.txt.new mv CMakeLists.txt.new CMakeLists.txt cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} . make -j 2 && make install
Building libx265
cd ${CMPL} hg clone https://bitbucket.org/multicoreware/x265 cd x265 cd source cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DENABLE_SHARED=NO . make -j 2 && make install
Building zlib
cd ${CMPL} tar xzpf ${MES}/zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure --prefix=${TARGET} --static make -j 2 && make install
Building bzip2
cd ${CMPL} tar xzpf ${MES}/bzip2-1.0.6.tar.gz cd bzip2-1.0.6 make make install PREFIX=${TARGET}
Up to here, the compilation path for ffmpeg, libav and mplayer are the same.
Now you can build either ffmpeg, libav or mplayer.
Building ffmpeg
cd ${CMPL} curl -O http://www.ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 tar xjpf ffmpeg-snapshot.tar.bz2 cd ffmpeg ./configure --prefix=${TARGET} --as=yasm --extra-version=snowy --disable-shared --enable-static --extra-cflags="-I${TARGET}/include" --extra-ldflags="-L${TARGET}/lib ---disable-ffplay --disable-ffserver --enable-gpl --enable-pthreads --enable-postproc --enable-gray --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-nonfree --enable-version3 --enable-libsnappy --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libopus --enable-libtwolame --enable-openal --enable-libsoxr --enable-libfdk-aac --enable-libwavpack --enable-libutvideo --enable-libzmq --enable-libvidstab --enable-libilbc --enable-libx265 make -j 2 && make install
Building libav
cd ${CMPL} git clone git://git.libav.org/libav.git cd libav ./configure --prefix=${TARGET} --as=yasm --extra-version=snowy --disable-shared --enable-static --extra-cflags="-I${TARGET}/include" --extra-ldflags="-L${TARGET}/lib --enable-gpl --enable-pthreads --enable-gray --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-nonfree --enable-version3 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libwavpack make -j 2 && make install
Building mplayer/mencoder
If you do not want mplayer/mencoder to make use of X11, simply rename /usr/X11/include prior to configure/make (and do not forget to revert the change after the build was successful). If Xcode 4.x is installed, mplayer/mencoder will not link successfully and thus the gcc-4.2/g++-4.2 from Xcode 3.x has to be used to compile and link mplayer/mencoder.
if [ -e /Developer-old ] then export CC=/Developer-old/usr/bin/gcc-4.2 export CXX=/Developer-old/usr/bin/g++-4.2 fi
And the actual mplayer/mencoder compilation step
cd ${CMPL} svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer cd mplayer ./configure --prefix=${TARGET} --extra-cflags="-I${TARGET}/include/" --extra-ldflags="-L${TARGET}/lib" make -j 2 && make install
After a successful run, you should be able to just grab the ffmpeg or
mplayer/mencoder binaries from ${TARGET}/bin and use them :)
If you really need ffplay, simply compile libSDL somewhere in the workflow (preferably after yasm has been built and before bzip2) and remove –disable-ffplay / –disable-avplay from the configure options.
BUT: The resulting ffmpeg/avconv binaries will have a lot more depencies to system libraries, considering that mplayer can also play media files without a GUI and there is also VLC available I personally do not see much point in building ffplay, but in any case, this is how you would do it.
cd ${CMPL} tar xzpf ${MES}/SDL-1.2.15.tar.gz cd SDL-1.2.15 ./configure --prefix=${TARGET} --disable-shared --enable-static && $MKMU && make install make -j 2 && make install
If ffmpeg/libav fails to build resulting in the following error:
libswscale/x86/yuv2rgb_mmx.c: In function 'ff_yuv2rgb_init_mmx': libswscale/x86/yuv2rgb_mmx.c:77: error: 'yuv420_rgb24_MMX2' undeclared (first use in this function) libswscale/x86/yuv2rgb_mmx.c:77: error: (Each undeclared identifier is reported only once libswscale/x86/yuv2rgb_mmx.c:77: error: for each function it appears in.) libswscale/x86/yuv2rgb_mmx.c:78: error: 'yuv420_bgr24_MMX2' undeclared (first use in this function)
Execute the following lines to fix a spelling(?) mistake(?) in the source code prior to running configure and make:
perl -p -i -e "s/24_MMX2/24_MMX/g" libswscale/x86/yuv2rgb_mmx.c perl -p -i -e "s/HAVE_MMX2/HAVE_MMX/g" libswscale/x86/yuv2rgb_mmx.c perl -p -i -e "s/AV_CPU_FLAG_MMX2/AV_CPU_FLAG_MMX/g" libswscale/x86/yuv2rgb_mmx.c
Compilation notes for compiling on MacOSX 10.7.x using Xcode 4.2.x
ffmpeg/libav:
- Compiler
Set export CC=clang as the very first step so everything is being compiled by clang - Ramdisk
Use ram://2097152 unless you want to create a really, really big RamDisk - zlib library
Remove the lib/libz.so* files which are being created for some unknown reason..
mplayer/mencoder:
- Compiler
Set export CC=clang and CXX=clang++ as the very first step so everything is being compiled by clang
Compilation notes for compiling on MacOSX 10.7.x using Xcode 4.3.x
- Compiler
If “upgrading” from Xcode 4.2.1 to Xcode 4.3 things will break. Especially if /Developer was moved to trash as Xcode 4.3 suggests you should do.
Prior to upgrading to XCode 4.3 uninstall XCode 4.2.1 using ‘sudo /Developer/Library/uninstall-devtools –mode=all’.
After this has succeeded, install Xcode 4.3 from the App Store and then download the command line tools from within XCode (Prefernces->Downloads->Command Line Tools)
Compilation notes for compiling on MacOSX 10.8.x using Xcode 4.4.x
- libvpx
Sometimes compiling 1.0.0 worked, sometimes not. You can build libvpx from git when compiling on Mountain Lion with XCode 4.4:export CFLAGS=-I/usr/include export LDFLAGS=-L/usr/lib cd ${CMPL} git clone http://git.chromium.org/webm/libvpx.git cd libvpx ./configure --prefix=${TARGET} --as=yasm --disable-shared --enable-static --enable-vp8 make -j 2 && make install unset CFLAGS unset LDFLAGS
Compilation notes for compiling on MacOSX 10.8.x using Xcode 5.0
- ffmpeg
When building ffmpeg and linking against libutvideo, ffmpeg will state it can not find utvideo This is due to the fact it uses -std=c99 as a g++ command line argument. The dirty fix for this is to modify the configure script (gnu sed!) and set the compilers accordingly prior to running the configure script:export CXX=/usr/bin/clang++ export CC=/usr/bin/clang sed "s/_ldflags='-std=c99'/_ldflags='-std=c++11'/g" -i configure sed "s/-std=c99$/-std-c++11/g" -i configure
Compilation notes for compiling on MacOSX 10.9.x using Xcode 5.0.1
- flac-1.3.0
Will refuse to compile, see https://trac.macports.org/ticket/40709 for further details. The fix described does not help. - cmake-2.8.12
This is to stop cmake looking for java using the following crude patch prior to executing ./configure (using gnu sed):rm Modules/FindJava.cmake sed "s/get_filename_component.JNIPATH/#get_filename_component(JNIPATH/g" -i Tests/CMakeLists.txt
- SDL-1.2.15
When building ffplay, SDL is required but that fails to build. Hence a very crude patch to get it to build (using gnu sed):sed "/CGDirectPaletteRef palette;/d" -i ./src/video/quartz/SDL_QuartzVideo.h
Source: http://hg.libsdl.org/SDL/rev/e9466ead70e5
Also, –disable-x11-video is needed for the configure line because Mavericks is missing an X11 include. - libvpx (from git)
Add –disable-unit-tests to the configure line when the build fails due to third party sources included. - mplayer
An include directive needs to be wadded to libvo/vo_corevideo.m (gnu sed) prior to running configure:sed "27i#include <OpenGL/gl.h>" -i libvo/vo_corevideo.m
Compilation notes for compiling on MacOSX 10.9.x using Xcode 5.1
- The clang 5.1 compiler does not support -falign-loops=16 and -fforce-addr anymore (hard error)
- Prior to running configure for x264, libtheora and xavs, the configure script needs to be modified
perl -p -i -e "s/-falign-loops=16//g" configure perl -p -i -e "s/-fforce-addr//g" configure
- Linking to libx265 can fail (ffmpeg is unable to find libx265)
Add -lstdc++ to $CFLAGS
Compilation notes concerning mpv
- mpv can be built but requires ffmpeg (libraries) to be present so in order to build mpv, everything up to and including ffmpeg must be compiled.
- The man pages for mpv will only be created when docutils is provided.
cd ${CMPL} export PYTHONPATH="${TARGET}/lib/python2.7/site-packages/" curl -L -O -s http://iweb.dl.sourceforge.net/project/docutils/docutils/0.11/docutils-0.11.tar.gz tar xzpf docutils* cd docutils* python setup.py install --prefix="${TARGET}"
- Last but not least, the mpv compilation step, without libass. Recently, the build system for mpv was changed to ‘waf’
cd ${CMPL} curl -L -O -s https://github.com/mpv-player/mpv/archive/master.zip unzip -q master.zip cd mpv-master ./bootstrap.py export PKG_CONFIG=pkg-config ./waf configure --prefix=${TARGET} --disable-libass-osd --disable-libass ./waf build ./waf install
Compilation notes concerning “missing” libraries
- libbluray
Requires libxml2 and freetype2 to compile, but blows up when linking to ffmpeg. I do not have a strong motive to investigate/fix this since I do not need libbluray… - game-music-emu-0.6.0
Needs a patch in gme/CMakeLists.txt create a static library but somehow not all symbols (for 64bit) end up in that static library… - libass-0.12.1
After being unable to find a set of working dependencies for libass (versions of the libraries libass requires) I investigated in how HomeBrew does this. Building expat, freetype, fribidi and fontconfig worked like a charm, even libass actually does compile. This was the test build setup:#!/bin/bash # run make with 4 threads export MKMU="make -j 4" export VOLNAME=Ramdisk export TARGET="/Volumes/${VOLNAME}/" export CMPL="/Volumes/${VOLNAME}/compile" export MES="/Volumes/${VOLNAME}/src" export PATH=${TARGET}/bin:$PATH # first, build pkg-config which references cd ${CMPL} || exit 1 tar xzpf ${MES}/pkg-config* cd pkg-config* ./configure --prefix=${TARGET} --with-pc-path=${TARGET}/lib/pkgconfig --with-internal-glib && $MKMU && make install # next, yam cd ${CMPL} tar xzpf ${MES}/yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure --prefix=${TARGET} && $MKMU && make install # next, libexpat cd ${CMPL} tar xzpf ${MES}/expat-2.1.0.tar.gz cd expat-2.1.0 ./configure --prefix=${TARGET} --disable-debug --disable-shared --enable-static && $MKMU && make install # next, libpng cd ${CMPL} tar xzpf ${MES}/libpng-1.6.16.tar.gz cd libpng-1.6.16 ./configure --prefix=${TARGET} --disable-shared --enable-static && $MKMU && make install # next, freetype cd ${CMPL} tar xzpf ${MES}/freetype-2.5.5.tar.gz cd freetype-2.5.5 ./configure --prefix=${TARGET} --disable-shared --enable-static && $MKMU && make install # next fribidi cd ${CMPL} tar xjpf ${MES}/fribidi-0.19.6.tar.bz2 cd fribidi-0.19.6 ./configure --prefix=${TARGET} --disable-shared --enable-static && $MKMU && make install # fontconfig cd ${CMPL} tar xzpf ${MES}/fontconfig-2.11.92.tar.gz cd fontconfig-2.11.92 ./configure --prefix=${TARGET} --with-add-fonts=/Library/Fonts,~/Library/Fonts --disable-shared --enable-static && $MKMU && make install # libass cd ${CMPL} tar xzpf ${MES}/libass-0.12.1.tar.gz cd libass-0.12.1 ./configure --prefix=${TARGET} --disable-shared --enable-static && $MKMU && make install # lua cd ${CMPL} tar xzpf ${MES}/lua-5.2.3.tar.gz cd lua-5.2.3 make macosx install INSTALL_TOP=${TARGET} # create a lua.pc so mpv can find it cat >${TARGET}/lib/pkgconfig/lua.pc <<EOF prefix=/Volumes/Ramdisk exec_prefix=\${prefix} libdir=\${prefix}/lib/ includedir=\${prefix}/include Name: lua Description: lua Requires: Version: 5.2.3 Libs: -L\${libdir} -llua Cflags: -I\${includedir} EOF # fix fontconfig, using gnu sed sed "/^Libs: / s/-lfontconfig/-lfontconfig -lpng -lexpat -L\/Volumes\/Ramdisk\/lib -lfreetype/g" -i /Volumes/Ramdisk/lib/pkgconfig/fontconfig.pc # ffmpeg # set compiler flags export LDFLAGS="-L${TARGET}/lib $CFLAGS" export CFLAGS="-I${TARGET}/include $LDFLAGS" cd ${CMPL} curl -O http://www.ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 tar xjpf ffmpeg-snapshot.tar.bz2 cd ffmpeg ./configure --prefix=${TARGET} --disable-fontconfig --enable-libass --enable-static --disable-shared && $MKMU && make install # extend the python modules path export PYTHONPATH="${TARGET}/lib/python2.7/site-packages/" # build docutils so mpv can build its man pages cd ${CMPL} lftpget http://iweb.dl.sourceforge.net/project/docutils/docutils/0.12/docutils-0.12.tar.gz tar xzpf docutils* cd docutils* python setup.py install --prefix="${TARGET}" # this is needed for waf or it will not find an executable compiler export CC=clang # and build mpv cd ${CMPL} curl -L -O -s https://github.com/mpv-player/mpv/archive/master.zip unzip -q master.zip cd mpv-master ./bootstrap.py export PKG_CONFIG=pkg-config ./waf configure --prefix=${TARGET} ./waf build ./waf install
ffmpeg and mpv should be found in /Volumes/Ramdisk/bin and should support libass.
When /Volumes/Ramdisk goes away, fontconfig will not be able to find its configuration file and cache anymore. So before you unmount /Volumes/Ramdisk, do the following:export FONTCONFIG_FILE=$HOME/.myfontconfig-fonts.conf cp /Volumes/Ramdisk/etc/fonts/fonts.conf $FONTCONFIG_FILE cp -R /Volumes/Ramdisk/var/cache/fontconfig $HOME/.fontconfig cd $HOME # copy mpv and/or ffmpeg to a different location umount /Volumes/Ramdisk
The fontconfig library used by mpv should now be able to find the font configuration file and the cache. You may want to add the FONTCONFIG_FILE environment variable to your shell environment to make this a permanent solution.
- frei0r-plugins-1.4
Requires autoheader from the GNU Autoconf package and somehow resists installing frei0r.h to the correct location when using ‘make install’. Actually, it does not install the header at all. Which is kind of sad because ffmpeg would really really like to find that header file. - libcaca-0.99.beta18
The configure runs fine but when compiling it blows up with... dither.c:XXX: warning: alias definitions not supported; ignored' ...
It does not blow up when using the gcc-4.2 from XCode 3 but things go awfully wrong when trying to link libcaca to ffmpeg, although the demo from libcaca work…
- schroedinger-1.0.11
Requires ‘orc’ and compilation still breaks withUndefined symbols for architecture x86_64: "__schro_decode_prediction_only", referenced from: _schro_init in libschroedinger-1.0.a(libschroedinger_1.0_la-schro.o) "__schro_telemetry", referenced from: _schro_init in libschroedinger-1.0.a(libschroedinger_1.0_la-schro.o) ld: symbol(s) not found for architecture x86_64
Revision history:
[Updated 03/09/2016]: Updated git to 2.10,0, libressl to 2.4.2, cmake to 3.6.1, zeromq to 4.1.5, libogg 1.3.2, opus to 1.1.3 and fdk-aac to 0.1.4
[Updated 28/03/2016]: Updated git to 2.7.4, libressl to 2.3.3, mercurial to 3.7.2, opus to 1.1.2, zeromq to 3.2.5, pgk-config to 0.29.1 and cmake to 3.5.1
[Updated 31/01/2016]: Removed vo-aaenc, added snap 1.1.3
[Updated 04/10/2015]: Added libressl 2.3.0
[Updated 03/10/2015]: Updated git to 2.4.5, cmake to 3.3.1, xvidcore to 1.3.4, libvorbis to 1.3.5, speex to 1.2.rc2
[Updated 19/02/2015]: Updated git to 2.3.0, cmake to 3.1.3, notes on compiling mpv with libass
[Updated 13/12/2014]: Updated git to 2.2.0, cmake to 3.0.2
[Updated 02/09/2014]: Updated yasm from 1.2.0 to 1.3.0
[Updated 18/08/2014]: Updated zeromq to 3.2.4, amrnb/wb to 11.0, zlib to 1.2.8 and git to 2.0.0
[Updated 03/06/2014]: Added compilation hints for ffmpeg/mpv concerning libass
[Updated 20/05/2014]: Added compilation hints for Xcode 5.1, libx265 and ffmpeg
[Updated 19/04/2014]: Added git to 1.9.2
[Updated 27/03/2014]: Added libx265
[Updated 15/03/2014]: Added compilation hints for Xcode 5.1
[Updated 02/02/2014]: Added libilbc
[Updated 30/01/2014]: Added vid.stab 0.98a
[Updated 26/01/2014]: Updated vorbis to 1.1.4, fdk-aac to 1.1.3, git to 1.8.5 and cmake to 2.8.12.1
[Updated 22/12/2013]: Updated pkg-config to 0.28, opus to 1.1 and libogg to 1.3.1
[Updated 02/12/2013]: Updated compilation hints for mpv
[Updated 20/11/2013]: Updated vo-aacenc and vo-amrwbenc to 1.0.3, wavpack to 4.70.1
[Updated 25/10/2013]: Added compilation hint for mplayer and Mac OS X 10.9 Mavericks
[Updated 24/10/2013]: Added compilation hints when using Xcode 5.0.1 on MacOSX 10.9 Mavericks
[Updated 20/09/2013]: Added compilation hints for mpv and ffmpeg when using Xcode 5
[Updated 01/09/2013]: Added compile information concerning libcaca, libass and mpv
[Updated 22/08/2013]: Updated xavs source location
[Updated 21/07/2013]: Added libutvideo, zeromq and wavpack
[Updated 19/07/2013]: Added fdk-aac
[Updated 18/07/2013]: Updated opus to 1.0.3, added cmake, openal and libsoxr
[Updated 12/06/2013]: Updated flac to 1.3.0
[Updated 15/05/2013]: Added twolame-0.3.13.tar.gz, remarks about missing libraries
[Updated 10/02/2013]: Provided a compilation note concerning ffplay and SDL-1.2.15.tar.gz
[Updated 09/01/2013]: Updated opus to 1.0.2
[Updated 12/09/2012]: Added pkg-config and libopus
[Updated 10/09/2012]: Fixed the perl expression for gsm
[Updated 28/07/2012]: Added remark on how to compile libvpx from the git repository
[Updated 30/05/2012]: libvpx does not need “special” CFLAGS/LDFLAGS anymore
[Updated 30/05/2012]: Fixed the gsm.h header location, added –enable-libgsm
[Updated 30/05/2012]: Updated zlib to 1.2.6, libvpx to 1.1.0, vo-aacenc/vo-amrwbenc to 0.1.2
[Updated 21/04/2012]: Updated zlib to 1.2.6
[Updated 02/03/2012]: Updated lame to 3.99.5
[Updated 18/02/2012]: Added libvpx compilation hints when using Xcode 4.3
[Updated 10/02/2012]: Updated libvorbis to 1.3.3, using libvpx v1.0.0 instead of git repository
[Updated 29/01/2012]: Updated lame to 3.99.4
[Updated 20/12/2011]: Added libvpx
[Updated 19/12/2011]: Hints about compiling on 10.7.x (Lion)
[Updated 13/12/2011]: Updated yasm to 1.2.0, fixed a spelling mistake
[Updated 23/10/2011]: Updated lame to 3.99
[Updated 25/09/2011]: Updated libogg to 1.3.0
[Updated 16/09/2011]: libav does not support –disable-ffplay and –disable-ffserver anymore
[Updated 06/08/2011]: Added vo-aacenc and vo-amrwbenc
[Updated 28/07/2011]: Added libxavs, cleaned up the article a little
[Updated 23/06/2011]: x264 requires an extra make install command for the library and include files
[Updated 03/06/2011]: Provided compilation workaround for ffmpeg/libav
[Updated 01/06/2011]: Updated Xvid to 1.3.2
[Updated 29/03/2011]: Added libav compilation hint
[Updated 26/03/2011]: Updated Xvid to 1.3.1, new ffmpeg git location, Xcode 4 hint for mplayer
[Updated 24/02/2011]: Updated Xvid to 1.3.0, yasm to 1.1.0
[Updated 12/02/2011]: mplayer wants to download ffmpeg via git
[Updated 23/01/2011]: ffmpeg is now being obtained via git, updated libvorbis and libogg
[Updated 28/11/2010]: Fixed zlib static compilation, added a hint for X11 mencoder/mplayer
[Updated 21/09/2010]: Updated bzip2 version and ffmpeg-svn configure options
[Updated 20/06/2010]: Updated some libaries/components
[Updated 20/02/2010]: Recent tarballs of x264 do not require –enable-static –disable-shared configure options
[Updated 06/09/2009]: Using more recent library versions. Can compile on Snow Leopard