Foto-VCDs unter Linux erstellen

Aus LinuxUser 10/2003

Foto-VCDs unter Linux erstellen

Bilderflut

Seit Einzug der Digitalkameras in viele Haushalte sammeln sich auf der Festplatte unzählige Aufnahmen, sei es aus der eigenen Kamera oder von Freunden per Mail zugeschickt. Ausdrucke auf Fotopapier sind teuer, und das Notebook will man nicht zu jedem Anlass mitnehmen, um die Bilder vorzuführen. Interessant ist daher die Möglichkeit ein Fotoalbum als Video-CD zu erstellen.

Möchten Sie eine Foto-CD erstellen, welche mit den meisten handelsüblichen DVD-Playern wiedergegeben werden kann, sollten Sie sich zunächst überlegen, welches Dateiformat sich hierfür anbietet. Einige DVD-Player sind beispielsweise in der Lage, einfache Daten-CD mit JPEG-Dateien abzuspielen, andere Player unterstützen das Kodak-Foto-CD-Format. Eine solche Foto-CD zu erstellen, gestaltet sich eigentlich denkbar einfach: Konvertieren Sie Ihre Bilddaten einfach in das passende Bildformat und erzeugen Sie eine Daten-CD mit den neuen Dateien.

Beide Lösungen haben aber einen entscheidenden Nachteil: Menüstrukturen einzubinden ist nicht möglich, die Navigation ist unübersichtlich, Fotos können nicht mit Audio-Kommentaren oder Musik hinterlegt werden, und zudem kann noch lange nicht jeder DVD-Player so erstellte CDs nutzen.

Eine gelungenere Lösung ist das Brennen der Fotodaten in Form einer VCD oder SVCD, wozu die Bilddaten in ein Still-MPEG-Format umgewandelt wird, welches später von jedem DVD-Player erkannt wird, der VCDs und SVCDs unterstützt.

Vorbereitungen

Damit Sie eine Foto-CD unter Linux erezugen können, sollten Sie folgende Pakete auf Ihrem System installiert haben:

  • ImageMagick
  • MJpegtools
  • CDRDao
  • VCD Imager ImageMagick sollte in jeder aktuellen Distribution enthalten sein; grundlegend gilt dies auch für die MJPEG-Tools – in der Praxis werden Sie jedoch feststellen, dass die den Distribitionen beiliegende Version nicht alle Funktionen enthält. Um diese dennoch nutzen zu können, müssen Sie die MJPEG-Tools manuell kompilieren und installieren. Da für die Übersetzung des Pakets einige Voraussetzungen erfüllt sein müssen, gestaltet sich die Installation recht aufwändig. Legen Sie in Ihrem /tmp-Verzeichnis zunächst ein Unterverzeichnis /tmp/mjpeg an. Von der Homepage des MJPEG-Projekts [1] laden Sie nun die folgenden Pakete herunter oder kopieren sie von der Heft-CD (LinuxUser/videocd/):
  • jpeg-mmx.0.1.4.tar.gz
  • quicktime4linux-1.4-patched-2.tar.gz
  • libmovtar.0.1.3.tar.gz
  • mjpegtools-1.6.1.90.tar.gz Die heruntergeladenen Pakete entpacken, kompilieren und installieren Sie nun durch Eingabe der folgenden Befehle:
tar xvzf jpeg-mmx.0.1.4.tar.gz
cd jpeg-mmx-0.1.4
./configure && make
cd ..
tar xvzf libmovtar-0.1.3.tar.gz
cd libmovtar-0.1.3
./configure --with-jpeg-mmx=/tmp/mjpeg/jpeg-mmx-0.1.4
make && make install
cd ..
tar xvzf quicktime4linux-1.4-patched-2.tar.gz
cd quicktime4linux-1.4-patch
./configure && make
cd ..
tar xvzf mjpegtools-1.6.1.90.tar.gz
cd mjpegtools-1.6.1.90
./configure --with-jpeg-mmx=/tmp/mjpeg/jpeg-mmx-0.1.4 --with-quicktime=/tmp/quicktime4linux-1.4-patch --enable-large-file
make && make install

Bechten Sie, dass nicht alle Quell-Pakete mit make install instlliert werden dürfen. Die MJPEg-Tools sollten nun vollständog bereitstehen.

Foto-SVCDs über die Kommandozeile

Besonders flexibel, wenn auch nicht gerade komfortabel, können Sie Foto-CDs über die Kommandozeile erstellen. Dazu verwenden Sie zunächst einige Konvertierungsfunktionen der MJPEG-Tools. Wandeln Sie Ihre JPEG-Bilder zunächst ins MJPEg-Format um. Dazu können Sie den folgenden Kommandozeilenbefehl verwenden:

jpeg2yuv -f 25 -j pic001.jpg -I p -n 1 ….

Hierdurch wird das JPEG-Bild in ein MJPEG-Movie umgewandelt. Die Option -f 25 gibt hierbei an, dass ein Video im europäischen Fernsehstandard PAL erzeugt werden soll. Das Deinterlacing erfolgt mit Hilfe der Option -I p. Dass aus dem Bild ein Still-MJPEG erzeugt wird, erledigt die Option -n 1: Sie sorgt dafür, dass tatsächlich nur ein Frame kodiert wird. Dies ist deutlich praktischer als das Kodieren eines längeren Zeitraums, da hierdurch Platz gespart wird; DVD-Player kommen mit diesen Dateien später trotzdem klar.

Bilder einer digitalen Fotokamera besitzen meist eine deutlich höhere Auflösung als auf dem Fernseher darstellbar ist. Aus Kapazitäts- und Kompatibilitätsgründen empfiehlt es sich daher, das erstellte Videomaterial direkt zu skalieren. Hierzu können Sie das Hilfsprogramm yuvscaler nutzen, das Sie wie folgt als Filter verwenden:

jpeg2yuv -f 25 -j pic001.jpg -I p -n 1 | yuvscaler -O SIZE_704x480 ….

Mit der Erstellung des YUV-Videostroms ist die Erstellung des SVCD-kompatiblen Formats aber noch nicht abgeschlossen. Zusätzlich muss das Videomaterial nun noch ins MPEG-Format umgewandelt werden. Hierzu verlängern Sie obige Pipeline um einen mpeg2enc-Aufruf:

jpeg2yuv -f 25 -j pic001.jpg -I p -n 1 | yuvscaler -O SIZE_704x480 | mpeg2enc -a 2 -T 200 -n p -f 7 -o pic1.m2v

Mit der Option -a 2 aktivieren Sie das Bildformat 4:3. Für Bilder im Kleinbildformat ist dieses optimal geeignet. Mit -T 200 legen Sie die maxiamle Größe der JPEG-Bilddatei auf 200 KB fest. Dies ist der höchste einstellbare Wert. Damit tatsächlich eine Video-CD im PAL-Format erzeugt wird, muss die Option -n p angegeben werden. Das SVCD-Format wird dabei durch die Option -f 7 festgelegt. Abschließend muss das so erzeugte Video noch gemultiplext werden. Übergeben Sie dazu die neu erstellte Datei pic1.m2v an das Programm mplex:

mplex -f 7 -o stillpic1.mpg pic1.m2v

Den gleichen Vorgang wiederholen Sie nun für alle Bilder, die Sie Ihrer Foto-CD hinzufügen möchten.

Foto-CDs auf VCD-Basis

Genauso einfach wie eine Foto-CD auf SVCD-Basis können Sie auch eine VCD mit Fotoinhalt erzeugen. Neben den VCD-Optionen der mplex– und mpeg2enc-Befehle müssen Sie aber eine weitere Besonderheit von VCD-2.0-kompatiblen Foto-CDs berücksichtigen: Die Standbilder müssen sowohl in hoher als auch niedriger Auflösung bereitstehen. Passende Shell-Befehle zur Umwandlung eines einzelnen Bildes könnten beispielsweise wie folgt aussehen:

jpeg2yuv -f 25 -j pic001.jpg -I p -n 1 | yuvscaler -O SIZE_352x240 | mpeg2enc -a 2 -T 43 -n p -f 6 -o pic1_low.m1v
jpeg2yuv -f 25 -j pic001.jpg -I p -n 1 | yuvscaler -O SIZE_704x480 | mpeg2enc -a 2 -T 200 -n p -f 6 -o pic1_high.m1v
mplex -f 7 -o stillpic1.mpg pic1_high.m1v pic1_low.m1v

Erstellen des VCD-Struktur mit XML-Dateien

Damit aus den Still-MPEG-Bildern eine ansprechende Foto-CD wird, müssen Sie diese über ein VCD-Menü zugänglich machen. Das Paket vcdimager bietet hierzu die Möglichkeit, die VCD-Struktur über eine XML-Datei bereitszustellen. Damit diese Datei nicht komplett manuell erstellt werden muss, können Sie das Tool vcdxgen nutzen:

vcdxgen pic1.mpg pic2.mpg -t svcd -o vcd.xml

Dabei müssen alle Bilder angegeben werden, die angezeigt werden sollen. Als Ergebnis wird Ihnen eine XML-Datei erstellt, die wie folgt aussieht (http://beispiel.xml):

<?xml version="1.0"?>
<!DOCTYPE videocd PUBLIC "-//GNU//DTD VideoCD//EN" "http://www.gnu.org/software/vcdimager/videocd.dtd">
<videocd xmlns="http://www.gnu.org/software/vcdimager/1.0/" class="svcd" version="1.0">
  <info>
    <album-id></album-id>
    <volume-count>1</volume-count>
    <volume-number>1</volume-number>
    <restriction>0</restriction>
  </info>
  <pvd>
    <volume-id>VIDEOCD</volume-id>
    <system-id>CD-RTOS CD-BRIDGE</system-id>
    <application-id></application-id>
    <preparer-id/>
    <publisher-id/>
  </pvd>
  <sequence-items>
    <sequence-item src="pic1.mpg" id="sequence-00"/>
  </sequence-items>
  <pbc>
    <playlist id="lid-000">
      <next ref="lid-end"/>
      <return ref="lid-end"/>
      <wait>5</wait>
      <autowait>0</autowait>
      <play-item ref="sequence-00"/>
    </playlist>
    <endlist id="lid-end" rejected="true"/>
  </pbc>
</videocd>

Unter Sequence-Items werden alle Standbilder aufgelistet, die angezeigt werden sollen. Damit jedes Bild eine bestimmte Zeit lang gezeigt wird, muss folgender Abschnitt für jedes Element hinzugefügt werden:

<selection id="display-pic1">
   <timeout ref="display-pic2"/>
   <wait>10</wait>
   <loop jump-timing="immediate">1</loop>
   <play-item ref="segment-001"/>
</selection>

Image-Datei mit vcdimager erstellen

Mit VCD Imager können Sie die erstellte XML-Datei nun leicht zum Erzeugen einer VCD-Image-Datei nutzen. Geben Sie dazu einfach folgenden Kommandozeilenbefehl in einem Terminal-Fenster ein:

vcdxbuild -b vcd.bin -c vcd.cue vcd.xml

Anhand der XML-Datei erstellt vcdimager nun automatisch ein entsprechendes VCD-Image. Dieses können Sie mit Hilfe des Kommandozeilen-Tools cdrdao[3] problemlos auf eine CD brennen:

cdrdao write -speed 4 -device 0,0,0 vcd.cue

Die Gerätedatei müssen Sie natürlich durch die Ihres CD-Brenners ersetzen. Die richtige Geräte-ID können Sie mit dem Befehl cdrecord –scanbus herausfinden.

Grafische Frontends?

Grafische Frontends für das Erstellen von Foto-CDs unter Linux sind bislang eher selten. Selbst nach langem Suchen findet sich bislang nur zwei Projeke, die sich mit dieser Problematik auseinandersetzen. Das wohl “gelungenste” Beispiel hierfür ist kfotocd. Es baut auf dem Skript-Backend “Kaptain” auf, welches die Erstellung grafischer Oberflächen für Kommandozeilenskripte vereinfachen soll. War Kaptain in der SuSE-Linux-Version 8.1 noch enthalten, sucht man es in der aktuellen Nürnberger Distribution vergeblich. Auch das manuelle Nachinstallieren aus Sourcen schlägt fehl. Somit läst sich auch das ansonsten recht ansprechende Tool KFotoCD zur Zeit nicht nutzen.

LinuxUser 10/2003 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben