ffmpeg for ogg and webm
June 07, 2013
I wanted to experiment with Ogg and WebM and the <video> tag, and I thought the easiest way would be with my favorite command-line transcoder, ffmpeg. It’s fabulous support for just about every audio and video file format makes it fabulous for hacking.
Sadly “brew install ffmpeg” doesn’t support the new file formats and codecs, so I had to compile it myself, as well as the codec libraries. Here’s what worked (on MacOSX Mountain Lion):
0. Clone from git and use a stable branch
Check the bottom of the download page for descriptions of latest stable versons.
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
Look for the version tag you want with: git tag -l
I picked 1.2.1 “Magic”
git checkout -b n1.2.1
1. Install Xcode, Homebrew, then and Remaining Dependendencies
following MacOSXCompilationGuide instructions.
2. Compile libvpx (needed for WebM)
I took these instructions from the UbuntuCompilationGuide, and swapped out the prefix to be what the Mac instructions told me to do:
<br></br> git clone --depth 1 http://git.chromium.org/webm/libvpx.git<br></br>cd libvpx<br></br>./configure --prefix=/usr/local --disable-examples<br></br>make<br></br>sudo make install<br></br>make clean<br></br>cd ..<br></br>
3. Configure & build ffmpeg
I picked just the libraries I needed plus whatever didn’t require extra dependencies:
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libaacplus --enable-libcelt --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-openssl --enable-libopus --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvo-aacenc --en
make && make install
Ready to Make Movies!
Ogg Theora/Vorbis
I just followed the instructions on the ffmpeg wiki I used lower video and audio quality since the wiki recommendations ended up creating a huge file.
ffmpeg -i mymovie.mov -codec:v libtheora -qscale:v 3 -codec:a libvorbis -qscale:a 3 mymovie.ogv
WebM
ffmpeg -i mymovie.mov -vcodec libvpx -acodec libvorbis mymovie.webm
size chart
2788953 pool-480p.mov
19459157 pool.mov
2870873 pool.mp4
833597 pool.webm
3022359 pool3v3a.ogv
4398308 pool4v3a.ogv
5755066 pool5v5a.ogv
7767888 pool6v5a.ogv
11424378 pool7v5a.ogv