IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Mac で MP4Box をビルドする

大まかな手順

  1. GPAC | Multimedia Open Source Project ←ここから、ソースをダウンロード
  2. 解凍
  3. configure
  4. make apps
  5. 仕上げ

詳細

ソースをダウンロード

そのときの最新版をダウンロードしてください

$ wget http://downloads.sourceforge.net/gpac/gpac-0.4.4-rc2.zip
解凍

unzip します。tar.gz をダウンロードした場合は tar xvfz で

$ unzip gpac-0.4.4-rc2.zip
configure

configure は chmod しないとダメだった

$ cd gpac
$ chmod 755 configure
$ ./configure
make apps

src/utils/os_net.c の u_long という型を unsigned long int に変更しないと make とおりません

$ vim src/utils/os_net.c
$ make apps
仕上げ

bin/gcc/MP4Box に出来ています。
libgpac.dylib を移動させます。
MP4Box をパスの通ったところに移動させます。

$ otool -L bin/gcc/MP4Box 
bin/gcc/MP4Box:
	/usr/local/lib/libgpac.dylib (compatibility version 0.0.0, current version 0.0.0)
	/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
$ sudo mv bin/gcc/libgpac.dylib /usr/local/lib/
$ sudo mv bin/gcc/MP4Box /usr/bin/
完成

はい完成!

$ MP4Box 
MP4Box [option] input [option]
 -h general:          general options help
 -h hint:             hinting options help
 -h import:           import options help
 -h encode:           encode options help
 -h meta:             meta handling options help
 -h extract:          extraction options help
 -h dump:             dump options help
 -h swf:              Flash (SWF) options help
 -h crypt:            ISMA E&A options help
 -h format:           supported formats help

 -nodes:              lists supported MPEG4 nodes
 -node NodeName:      gets MPEG4 node syntax and QP info
 -xnodes:             lists supported X3D nodes
 -xnode NodeName:     gets X3D node syntax
 -snodes:             lists supported SVG nodes
 -snode NodeName:     gets SVG node syntax
 -languages:              lists supported ISO 639 languages

-quiet:               quiet mode
 -v:                  verbose mode
 -version:            gets build version

ffmpeg 再インストール


なんか、使いたいコーデックがある度に入れ直すのが面倒なので、コーデックのダウンロードからそれぞれのビルドまでやる Makefile を作った。
自分の環境専用だけど、これがあれば make ってやるだけで全部入るので楽チン

all: ffmpeg-repos /usr/local/lib/libfaad.dylib /usr/local/lib/liba52.la /usr/local/lib/libdirac_decoder.dylib /usr/local/lib/libfaac.dylib /usr/local/lib/libgsm.a /usr/local/lib/libamrnb.dylib /usr/local/lib/libamrwb.dylib /usr/local/lib/libmp3lame.dylib /usr/local/lib/libx264.a /usr/local/lib/libnut.a /usr/local/lib/libtheora.dylib /usr/local/lib/libvorbis.dylib /usr/local/lib/libxvidcore.4.dylib 
	cd ffmpeg-repos && PKG_CONFIG_PATH=/usr/local/lib/pkgconfig sh configure --enable-gpl --enable-nonfree --enable-postproc --enable-avfilter --enable-avfilter-lavf --enable-liba52 --enable-liba52bin --enable-libamr-nb --enable-libamr-wb --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid && make && sudo make install


# ffmpeg-repos
ffmpeg-repos:
	svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg-repos


# faad2
faad2-2.6.1.tar.gz:
	wget http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz

faad2: faad2-2.6.1.tar.gz
	tar xvfz faad2-2.6.1.tar.gz

/usr/local/lib/libfaad.dylib: faad2
	cd faad2 && ./bootstrap && ./configure && make && sudo make install


# liba52
a52dec-0.7.4.tar.gz:
	wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz

a52dec-0.7.4: a52dec-0.7.4.tar.gz
	tar xvfz a52dec-0.7.4.tar.gz

/usr/local/lib/liba52.la: a52dec-0.7.4
	cd a52dec-0.7.4 && ./configure && make && sudo make install


# libdirac
dirac-0.10.0.tar.gz:
	wget http://downloads.sourceforge.net/dirac/dirac-0.10.0.tar.gz

dirac-0.10.0: dirac-0.10.0.tar.gz
	tar xvfz dirac-0.10.0.tar.gz 

/usr/local/lib/libdirac_decoder.dylib: dirac-0.10.0
	cd dirac-0.10.0 && ./configure && make && sudo make install


# faac2
faac-1.26.tar.gz:
	wget http://downloads.sourceforge.net/faac/faac-1.26.tar.gz

faac: faac-1.26.tar.gz
	tar xvfz faac-1.26.tar.gz

/usr/local/lib/libfaac.dylib: faac
	cd faac && ./bootstrap && ./configure && make && sudo make install


# libgsm
gsm-1.0.12.tar.gz:
	wget http://kbs.cs.tu-berlin.de/~jutta/gsm/gsm-1.0.12.tar.gz

gsm-1.0-pl12: gsm-1.0.12.tar.gz
	tar xvfz gsm-1.0.12.tar.gz

/usr/local/lib/libgsm.a: gsm-1.0-pl12
	cd gsm-1.0-pl12 && make && sudo cp lib/libgsm.a /usr/local/lib/ && sudo cp inc/gsm.h /usr/local/include/


# libamrnb
amrnb-7.0.0.2.tar.bz2:
	wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2

amrnb-7.0.0.2: amrnb-7.0.0.2.tar.bz2
	tar xvfj amrnb-7.0.0.2.tar.bz2

/usr/local/lib/libamrnb.dylib: amrnb-7.0.0.2
	cd amrnb-7.0.0.2 && ./configure && make && sudo make install


# libamrwb
amrwb-7.0.0.3.tar.bz2:
	wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2

amrwb-7.0.0.3: amrwb-7.0.0.3.tar.bz2
	tar xvfj amrwb-7.0.0.3.tar.bz2

/usr/local/lib/libamrwb.dylib: amrwb-7.0.0.3
	cd amrwb-7.0.0.3 && ./configure && make && sudo make install


# libmp3lame
lame-3.97.tar.gz:
	wget http://downloads.sourceforge.net/lame/lame-3.97.tar.gz

lame-3.97: lame-3.97.tar.gz
	tar xzf lame-3.97.tar.gz

/usr/local/lib/libmp3lame.dylib: lame-3.97
	cd lame-3.97 && ./configure && make && sudo make install


# libx264
x264:
	git clone git://git.videolan.org/x264.git

/usr/local/lib/libx264.a: x264
	cd x264 && ./configure && make && sudo make install

# libnut
libnut:
	svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut

/usr/local/lib/libnut.a: libnut
	cd libnut && make && sudo make install

# libogg
libogg-1.1.3.tar.gz:
	wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz

libogg-1.1.3: libogg-1.1.3.tar.gz
	tar xvf libogg-1.1.3.tar.gz

/usr/local/lib/libogg.dylib: libogg-1.1.3
	cd libogg-1.1.3 && ./configure && make && sudo make install

# libtheora
theora:
	svn co http://svn.xiph.org/trunk/theora theora

/usr/local/lib/libtheora.dylib: theora /usr/local/lib/libogg.dylib
	cd theora && ./autogen.sh && ./configure && make && sudo make install


# libvorbis
libvorbis-1.2.0.tar.gz:
	wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz

libvorbis-1.2.0: libvorbis-1.2.0.tar.gz
	tar xvfz libvorbis-1.2.0.tar.gz

/usr/local/lib/libvorbis.dylib: libvorbis-1.2.0
	cd libvorbis-1.2.0 && ./configure && make && sudo make install


# libxvid
xvidcore-1.1.3.tar.gz:
	wget http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz

xvidcore-1.1.3: xvidcore-1.1.3.tar.gz
	tar xvf xvidcore-1.1.3.tar.gz

/usr/local/lib/libxvidcore.4.dylib: xvidcore-1.1.3
	cd xvidcore-1.1.3/build/generic && ./bootstrap.sh && ./configure --disable-assembly && make && sudo make install