ffmpeg für MAC OSX 10.6 compilieren

Mit älteren ffmpeg Versionen hat man des öfteren das Problem das aktuelle Videos nicht konvertiert werden können, da das Format erst in der aktuellen SVN Version unterstütz wird.
Häufig bei Formaten die von neueren Videokameras erstellt werden.

Das sieht dann z.B. so aus:

$ ./ffmpeg -i ./testvideo-aus-einzelbildern-erstellt.avi -vpre libx264-main -b 1200k -ab 128k ./testvideo-aus-einzelbildern-erstellt.mp4
FFmpeg version SVN-r17619, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --enable-gpl --enable-postproc --enable-swscale --enable-libx264 --enable-libxvid --enable-pthreads --enable-avfilter --enable-libfaac --enable-libvorbis --enable-libfaad --enable-libfaac
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.19. 0 / 52.19. 0
  libavformat   52.30. 0 / 52.30. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Feb 26 2009 21:42:03, gcc: 4.2.1 (Apple Inc. build 5566)

Seems stream 0 codec frame rate differs from container frame rate: 3000.00 (3000/1) -> 29.67 (89/3)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './testvideo-aus-einzelbildern-erstellt.avi':
  Duration: 00:00:30.00, start: 0.000000, bitrate: 114185 kb/s
    Stream #0.0(eng): Video: Y'CbCr 4:2:2 - yuyv, 640x480, PAR 1:1 DAR 4:3, 29.67 tbr, 3k tbn, 3k tbc
    Stream #0.1(eng): Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s

swScaler: Unknown format is not supported as input pixel format.
Cannot get resampling context.

Abhilfe schafft hier ein frisches ffmpeg aus dem SVN.

Um die Erstellung der Binärdatei zu automatisieren bietet sich hier ein Script an.

Um ffmpeg mit dem Script compilieren zu können, müssen die als Kommentar am Scriptanfang genannten Tools installiert sein.
Da ich macports installiert habe, kann es sein das weitere Tools/Librarys benötigt werden. Sollte dies der Fall sein bitte ein Komentar hinterlassen und ich passe das Script dahingehend an.

install-ffmpeg-from-svn.sh

#!/bin/bash

# ffmpeg installer, snow leopard, install xcode first !
#
#
# 2do first:
#
# install xcode from developer.apple.com
#
# install yasm from source (needed for compiling x264)
#
# wget http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz
#  - unzip and change to dir
#  - ./configure
#  - make
#  - sudo make install
#
# install git - if not exist: http://code.google.com/p/git-osx-installer/ (not the GUI version!)

svn_rev_ffmpeg=$(svn info svn://svn.ffmpeg.org/ffmpeg/trunk | grep "Revision: [0-0]*" | sed "s/Revision: \([0-9]*\)/\1/") 

myDir=$(date +src_%Y%m%d-%H%M-ffmpeg_rev$svn_rev_ffmpeg)

echo
echo " - using x264   lib from git";
echo " - using lame   lib from cvs";
echo " - using faac   lib from tar (v1.28)";
echo " - using faad2  lib from tar (v2.7)";
echo " - using ffmpeg bin from svn (rev$svn_rev_ffmpeg)";
echo
echo "[press enter for start]"
echo
read

echo "using /$myDir for sources"
mkdir $myDir
cd $myDir
pwd
echo

echo
echo "download+compile+install x264 codec lib"
echo
echo
git clone git://git.videolan.org/x264.git
cd x264/
echo "------------------------------------------"
echo "start configure:"
echo
./configure
echo "------------------------------------------"
echo "start make:"
echo
make
echo
echo "------------------------------------------"
echo "enter password for installing 'x264' if needed"
echo "$USER@../x264> sudo make install"
sudo make install
echo
echo
echo "------------------------------------------"
cd ..

echo
echo "download+compile+install lame codec lib"
echo
echo
mkdir lame
cvs -z3 -d:pserver:anonymous@lame.cvs.sourceforge.net:/cvsroot/lame co -P lame
cd lame/
echo "------------------------------------------"
echo "start configure:"
echo
./configure
echo "------------------------------------------"
echo "start make:"
echo
make
echo
echo "------------------------------------------"
echo "enter password for installing 'lame' if needed"
echo "$USER@../lame> sudo make install"
sudo make install
echo
echo
echo "------------------------------------------"
cd ..

echo
echo "download+compile+install faac codec lib"
echo
echo
wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz \
	|| (
		echo "=====) manual download http://downloads.sourceforge.net/faac/faac-1.28.tar.gz"
		echo "=====) save in: $(pwd)"
		echo "=====) return for extracting..."
		ls -la ./faac-1.28.tar.gz
		read
		)
ls -la ./faac-1.28.tar.gz
tar xpzf ./faac-1.28.tar.gz
cd faac-1.28
echo "------------------------------------------"
echo "start configure:"
echo
./configure
echo "------------------------------------------"
echo "start make:"
echo
make
echo
echo "------------------------------------------"
echo "enter password for installing 'faac'"
echo "$USER@../faac> sudo make install"
sudo make install
echo
echo
echo "------------------------------------------"
cd ..

echo
echo "download+compile+install faad codec lib"
echo
echo
wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz \
	|| (
		echo "=====) manual download http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz"
		echo "=====) save in: $(pwd)"
		echo "=====) press return if ready for extracting..."
		ls -la ./faad2-2.7.tar.gz
		read
		)
ls -la ./faad2-2.7.tar.gz
tar xpzf ./faad2-2.7.tar.gz
cd faad2-2.7
echo "------------------------------------------"
echo "start configure:"
echo
./configure
echo "------------------------------------------"
echo "start make:"
echo
make
echo
echo "------------------------------------------"
echo "enter password for installing 'faad'"
echo "$USER@../faad> sudo make install"
sudo make install
echo
echo
echo "------------------------------------------"
cd ..

echo
echo "download+compile+install ffmpeg"
echo
echo
svn -r $svn_rev_ffmpeg checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
echo "------------------------------------------"
echo "start configure:"
echo
./configure \
	--enable-libmp3lame --enable-gpl \
	--enable-libx264 \
	--enable-libfaac --enable-nonfree \
	--enable-libfaad \
	--disable-debug \
	--disable-amd3dnow \
	--disable-amd3dnowext \
	--enable-shared \
	--enable-pthreads \
	--arch=x86_64
echo "------------------------------------------"
echo "start make:"
echo
make
echo
echo "------------------------------------------"
echo "enter password for installing 'ffmpeg'"
echo "$USER@../ffmpeg> sudo make install"
sudo make install
echo
echo
echo "------------------------------------------"
cd ..

# leave $myDate
cd ..
echo
echo
echo "run installed ffmpeg - is it $svn_rev ???"
echo
echo

/usr/local/bin/ffmpeg

echo
echo
echo
echo "------------------------------------------"
echo "all done."
echo

neuste Version:

$ ffmpeg
FFmpeg version SVN-r21485, Copyright (c) 2000-2010 Fabrice Bellard, et al.
  built on Jan 27 2010 21:04:23 with gcc 4.2.1 (Apple Inc. build 5646) (dot 1)
  configuration: --enable-libmp3lame --enable-gpl --enable-libx264 --enable-libfaac --enable-nonfree --enable-libfaad --disable-debug --disable-amd3dnow --disable-amd3dnowext --enable-shared --enable-pthreads --arch=x86_64
  libavutil     50. 7. 0 / 50. 7. 0
  libavcodec    52.48. 0 / 52.48. 0
  libavformat   52.47. 0 / 52.47. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0. 9. 0 /  0. 9. 0
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

Wenn jemand Verbesserungen am Script vornimmt, würde ich mich über eine Nachricht freuen und das Script ggf. anpassen.

1 thought on “ffmpeg für MAC OSX 10.6 compilieren

  1. Danke für das Script, es war äußerst hilfreich. Die Sachen laufen auch ohne Macports wie beschrieben einwandfrei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.