FFmpeg die Flötentöne beibringen

Dieser Artikel wurde am 23.12.2006 in meinem Blog veröffentlicht und 2009 in dieses Wiki übertragen.

Es sollte ja nur mal eben ein Video ins flv (Flash Video) Format umgewandelt werden. An sich keine Hexerei sollte man meinen. Zu früh gefreut, denn beim Abspielen der erzeugten flv Dateien war kein Ton zu hören. Zunächst glaubte ich an einen Fehler beim Konvertieren und versuchte die diversesten ffmpeg Parameter. Es führte aber immer zum gleichen Ergebnis, ein Flash Video ohne Ton.
Einen Fehler im Media-Player konnte ich ausschliessen, da er andere Flash Videos problemlos wiedergab. Nach einer kurzen Pause und wiedererlangter Muse für weitere Experimente sah ich mir dann die Ausgabe von ffmpeg mal genauer an und entdeckte dort den magischen Begriff: MP3. Mir fiel es wie Schuppen von den Augen, wegen der MP3 Patente sind bei Ubuntu in der Standardinstallation keine MP3 De- bzw. Encoder dabei. Bisher hatte ich daran keinen Gedanken verschwendet da ich den „VLC Media Player“ installiert habe. Dieser hat bis jetzt, im Gegensatz zu totem, noch alle Musik- und Videoformate wiedergegeben hat, die mir untergekommen sind. Das half nur in diesem Fall rein gar nichts und es musste ein Weg gefunden werden, dass FFmpeg auch mit mp3 umgehen kann. Da unter den Ubuntu Paketen kein FFmpeg zu finden war, das MP3 Encoding kann führt kein Weg daran vorbei selbst den Compiler anzuwerfen. Um das System nicht mit „fremden“ Bibliotheken zu belasten wählte einen Weg FFmpeg möglichst konform zur Ubuntu/Debian Paketverwaltung zu modifizieren. Das bedeutet zwar immer noch, dass man einen Gutteil der Programme und Bibliotheken selbst kompiliert, benutzt werden aber die Quelldateien aus dem Ubuntu Repository.

Nachtrag: Das im folgenden beschriebene Vorgehen kann auch mit Ubuntu 7.04 Feisty Fawn Beta angewendet werden, lediglich einige Versionummern unterscheiden sich. Siehe dazu den Blog Artikel “Feisty Fawn (Beta) + ffmpeg + mp3“.

Das hier beschriebene Vorgehen wurde auf einer Xubuntu 6.10 Installation durchgeführt, sollte aber für alle übrigen Edgy Eft Varianten ebenso gelten. Wie die meisten fortgeschrittenen Installationsaufgaben findet diese in einem Terminal statt und es wird davon ausgegangen, dass der Umgang mit dem Editor vi bekannt ist (oder zumindest wie man statt vi einen anderen Editor aufruft ;-)).

Vorarbeiten

root werden

sudo su

Falls FFmpeg installiert ist, das Paket wieder entfernen

apt-get --purge remove ffmpeg

Weitere Repositories aktivieren

universe und multiverse Repositories in /etc/apt/sources.list aktivieren und apt-get update nicht vergessen

Falls noch nicht geschehen, die notwendige Entwicklungsumgebung installieren

apt-get install build-essential dpkg-dev quilt fakeroot

FFmpeg kompilieren

Die benötigten Bibliotheken installieren

apt-get install libimlib2-dev texi2html lame liblame-dev libfaad2-dev libmp4v2-dev \
libfaac-dev libxvidcore4-dev debhelper libogg-dev libvorbis-dev liba52-dev libdts-dev \
libsdl1.2-dev libraw1394-dev libdc1394-13-dev libtheora-dev libgsm1-dev

FFmpeg Quellen installieren

(die genaue Bezeichnung bzw. Version kann variieren!)

cd /usr/src
apt-get source ffmpeg
cd ffmpeg-0.cvs20060823

Debian Paket(e) erzeugen

Im Netz existieren Anleitungen die eine Anpassung der Datei debian/build vorsehen, dies ist aber nicht zwingend notwendig, wenn man die Variable DEB_BUILD_OPTIONS=„risky“ setzt.

DEB_BUILD_OPTIONS="risky" dpkg-buildpackage

Paket(e) installieren

FFmpeg

cd ..
dpkg -i ffmpeg_0.cvs20060823-3.1ubuntu1_i386.deb

Bibliotheken installieren

An diesem Punkt versagt leider mein Wissen um die Debian/Ubuntu Paketverwaltung. Bisher ging ich davon aus, dass bei der Installation von Debian Quellpaketen immer auch die dabei erzeugten Bibiliotheken automatisch installiert werden. Das Symptom bei mir war jedenfalls, dass ich trotz selbst kompliliertem FFmpeg immer noch kein MP3-Encoding möglich war. Daher habe ich die Debian Pakete im Verzeichnis /usr/src, die im Zuge der Kompilierung (1.3) erzeugt wurden, manuell installiert.

dpkg -i libavcodec0d_0.cvs20060823-3.1ubuntu1_i386.deb
dpkg -i libavformat0d_0.cvs20060823-3.1ubuntu1_i386.deb
dpkg -i libpostproc0d_0.cvs20060823-3.1ubuntu1_i386.deb

Update für FFmpeg deaktivieren

Da die selbst erzeugten Programme im Falle einer neuen Version wieder durch die Originale ohne MP3 Fahigkeiten ersetzt würde ist es notwendig die aktuell installierten Versionen „festzupinnen“. Dafür ist die Datei /etc/apt/preferences zuständig, diese mit einem Editor öffnen (vi /etc/apt/preferences) und folgendes hinzufügen:

Package: ffmpeg
Pin: version 0.cvs20060823-3.1ubuntu1
Pin-Priority: 1001

Package: libavcodec0d
Pin: version 0.cvs20060823-3.1ubuntu1
Pin-Priority: 1001

Package: libavformat0d
Pin: version 0.cvs20060823-3.1ubuntu1
Pin-Priority: 1001

Package: libpostproc0d
Pin: version 0.cvs20060823-3.1ubuntu1
Pin-Priority: 1001

Der Befehl

ffmpeg -i video.avi video.flv

sollte jetzt aus der Quelldatei video.avi eine Flash Video Datei mit dem Namen video.flv erzeugen bei der auch die Tonspur vorhanden und hörbar ist. Um das Flash Video auf dem lokalen Rechner zu betrachten eignet sich der o.g. VLC Media Player (apt-get install vlc). Sofern man das Flash Video in eine Website einbinden will benötigt man einen Flash Video Player wie er z.B. youtube oder Google Video zum Einsatz kommt. Die besten Erfahrungen habe ich mit dem Flash Video Player von Jeroen Wijering und dem FlowPlayer gemacht.
Kleine Notiz am Rande, entgegen landläufiger Meinung ist es nicht zwingend notwendig einen Flash Streaming Server zu verwenden, das Flash Video kann auch von einem „normalen“ HTTP Server (z.B. apache) heruntergeladen werden. In diesem Zusammenhang lohnt sich ein Blick auf flvtool2, mit dem es möglich ist die Meta Daten von Flash Videos zu bearbeiten. Diese Metadaten sind u.a. notwendig für die Fortschrittsanzeige und das Vor- bzw. Zurückspulen im Video Player.

Kommentare

it/ffmpeg_floetentoene.txt · Zuletzt geändert: 2011/01/10 16:52 (Externe Bearbeitung)
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 3.0 Unported
Blog - Impressum

Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki