[OpenBSD]

[FAQ-Index] [Zum Kapitel 12 - Hardware- und plattformspezifische Fragen] [Zum Kapitel 14 - Platteneinrichtung]

13 - Multimedia


Inhaltsverzeichnis


13.1 - Wie konfiguriere ich mein Audiodevice?

Die Gerätedateien unter OpenBSD, die mit Audio zu tun haben, sind /dev/audio, /dev/sound, /dev/audioctl und /dev/mixer. Bitte lies die Manualseite für audio(4), um einen guten Überblick über die Audiotreiberschicht zu erhalten.

Alle unterstützten Audiotreiber befinden sich bereits im GENERIC-Kernel, sodass keine weitere Konfiguration oder Installation der Treiber notwendig ist. Um die Optionen für deinen Soundchip zu erfahren, musst du herausfinden, welchen Soundchip du hast. Unterstützte Chips können auf der Hardwarekompatibilitätsseite für deine Plattform gefunden werden. Wenn OpenBSD bei dir bereits läuft, siehe nach, ob in der Ausgabe vom Kommando dmesg(8) ein Soundtreiber aufgelistet wird und lies die Manualseite für diesen, um weitere spezifische Informationen wie zum Beispiel Optionen und andere Details über diesen Treiber zu erfahren. Ein Beispiel für einen Audiochip in einer Ausgabe von dmesg ist:

auich0 at pci0 dev 31 function 5 "Intel 82801BA AC97" rev 0x04: irq 10, ICH2 AC97
ac97: codec id 0x41445360 (Analog Devices AD1885)
ac97: codec features headphone, Analog Devices Phat Stereo
audio0 at auich0

Du kannst testen, ob dein Audiodevice bereits ordnungsgemäß läuft, indem du eine Audiodatei (normalerweise mit der Endung .au) an es sendest. Wenn du keine Audiodatei hast, kannst du ebenfalls irgendeine Text- oder Binärdatei an das Device senden:

$ cat filename > /dev/audio
Wenn du etwas hörst (sollte es keine Audiodatei gewesen sein, wird es sich nicht gut anhören und vielleicht auch laut sein), bedeutet das, dass der Chip von OpenBSD unterstützt wird und beim Hochfahren vom Kernel erkannt und konfiguriert wurde.

Hinweis: Nicht jede Unterart oder Verarbeitung aller Chips wurde getestet oder auf Fehler untersucht.

Wenn du nach dem Eingeben des Kommandos nichts gehört hast, kann es einige mögliche Gründe hierfür geben:

Bedenke, dass selbst wenn du etwas gehört hast, das noch nicht unbedingt bedeutet, dass alles so funktionieren wird wie du es gerne möchtest. Wenn du beim Abspielen von Sounds Probleme hast, solltest du die folgenden Dinge aus dieser Liste überprüfen:

Um die Parameter für dein Audiodevice einzustellen - wie zum Beispiel die Samplerate - kannst du audioctl(1) verwenden. Um die Lautstärke oder andere Mixereinstellungen zu konfigurieren, kannst du mixerctl(1) benutzen. Beide Werkzeuge werden als Teil des Basissystems mitgeliefert.

Um zum Beispiel die Lautstärke vom linken sowie vom rechten Kanal auf 200 zu setzen, würdest du beispielsweise (Siehe Hinweis 2 weiter unten) Folgendes aufrufen:

$ mixerctl outputs.master=200,200
outputs.master: 255,255 -> 207,207
Beachte, dass der Wert 207 wird. Der Grund hierfür ist, dass mein Audiodevice einen AC'97-Codec hat, der nur 5 Bits für Lautstärkekontrolle verwendet. Das führt zu gerade einmal 32 möglichen Werten. Selbstverständlich kann andere Hardware eine andere Anzahl Bytes haben.

Um den Masterkanal zu aktivieren, würdest du Folgendes aufrufen:

$ mixerctl outputs.master.mute=off
outputs.master.mute: on -> off

Um deine Änderungen fest einzutragen, musst du /etc/mixerctl.conf editieren. Beispielsweise:

$ cat /etc/mixerctl.conf
outputs.master=200,200
outputs.master.mute=off
outputs.headphones=160,160
outputs.headphones.mute=off
Hinweis 1: Es kann sein, dass du mehr Anschlüsse sehen kannst, als sich auf deiner Soundkarte oder deinem Mainboard befinden. Der Grund hierfür ist, dass es normalerweise günstiger ist, Chips auf den Boards zu installieren, als die Buchsen für die Anschlüsse einzubauen, sodass nicht jede Option des Audiochips notwendigerweise auch die Außenwelt erreicht.

Hinweis 2: Die Ausgaben deines Audiodevices könnte auf deinem System anders benannt sein. Zum Beispiel ist es möglich, dass du kein outputs.master wie in der oben aufgeführten Ausgabe hast. Stattdessen müsstest du zum Beispiel outputs.output oder eine andere Einstellung ändern. Diese Namen hängen vom Audiotreiber ab. Du kannst den passenden Namen auf einfache Weise herausfinden, indem du die Kontrollwerte mit Folgendem Aufruf auflisten lässt:

$ mixerctl -a

13.2 - Unterschiedliche Audiotypen abspielen

Digitalisiertes Audio

Verlustfreie Audioformate (AU, PCM, WAV, FLAC, TTA)

Einige der verlustfreien Audioformate können ohne Software von Drittanbietern abgespielt werden - vorausgesetzt die Software kennt die Kodierung des Formats. Diese Formate sind unter anderem Sun audio (AU), rohe PCM-Dateien (ohne Header) und RIFF-WAV-Dateien.

Wenn Du vorhast, eine solche Datei abzuspielen, solltest du die genauen Parameter kennen: Kodierungstyp, Anzahl der Kanäle, die Abtastrate und die Bitanzahl der Abtastung. Wenn du diese Informationen nicht hast, kannst Du sie mit Hilfe von file(1) feststellen:

$ file music.au
music.au:  Sun/NeXT audio data: 16-bit linear PCM, stereo, 44100 Hz
$ file music.wav
music.wav: Microsoft RIFF, WAVE audio data, 16 bit, stereo 44100 Hz
Die verbleibenden Dinge, die man noch über dieses Beispiel wissen sollte, ist dass die Datei die Littleendian-Byteanordnung und »signed linear quantization« nutzt. Das kannst du heraus finden, indem du den Header mit hexdump(1) ansiehst. Wenn du headerlose (Raw-)Dateien hast, gibt es keine Möglichkeit, diese Parameter im Vorfeld zu bestimmen. Setze die folgenden Parameter mittels audioctl(1).
play.encoding=slinear_le
play.rate=44100
play.channels=2
play.precision=16
Leite als nächstes die Audiodatei durch ein Soundlaufwerk:
$ cat music.au > /dev/sound
Wenn du die korrekten Werte gesetzt hast, solltest du das hören, was du erwartet hattest.

Merke: Benutze immer /dev/sound (nicht /dev/audio), wenn du willst, dass die mit audioctl eingerichteten Werte auch gesichert bleiben.

Es gibt noch andere Programme, die du benutzten kannst; beispielsweise aucat(1) und audio/waveplay, die in den Packages und Ports zur Verfügung stehen. Selbstverständlich gibt es noch andere, populäre Software wie XMMS, die in der Lage ist, solche Dateien und auch andere Audioformate abzuspielen.

Abgesehen von dem zuvor Beschriebenen gibt es Audioformate, die verlustfreie Kompression verwenden. Beispiele für solche Formate sind: »Free Lossless Audio Codec« (FLAC) und TTA. Die FLAC-Implementation wurde auf OpenBSD portiert und kann unter audio/flac in den Ports oder Packages gefunden werden.

Audioformate mit verlustbehafteter Komprimierung (Ogg Vorbis, MP3, WMA, AAC)

Verlustfreie Kompressionsverfahren werden oft in Audio- oder anderen Mediadateien verwendet. Die Idee dahinter ist, eine Menge Daten während der Komprimierung zu verwerfen. Diese Verfahren reduzieren den Platzbedarf und die Anforderungen an die Bandbreite. Das Ergebnis ist sowohl eine geringere Datenmenge als auch eine noch akzeptable Abspielqualität.

Ein gutes Beispiel hierfür ist das freie, offene und unpatentierte Ogg-Vorbis-Format. Um Ogg-Vorbis-Dateien abzuspielen, kannst du das Programm ogg123 benutzen, welches im Package audio/vorbis-tools enthalten ist. Zum Beispiel:

$ ogg123 music.ogg

Audio Device:   Sun audio driver output

Playing: music.ogg
Ogg Vorbis stream: 2 channel, 44100 Hz
Time: 00:02.95 [02:21.45] of 02:24.40  (133.1 kbps)  Output Buffer  87.5%
Selbstverständlich existieren Ogg-Vorbis-Plugins auch für andere Software.

Ein weiteres sehr populäres Beispiel ist die »MPEG-1 Audio Layer 3«- (MP3-) Komprimierung, welche - warum auch immer - einige Lizenzen und Patente hat. MP3-Dateien können von vielen Programmen wiedergegeben werden. Schau einfach mal durch die audio-Sektion der Portliste oder der Packages.

Was ist mit dem proprietären »Windows Media Audio«- (WMA-) Format? Dateien solchen Formates können mittels x11/mplayer abgespielt werden, welches das FFmpeg-Framework nutzt.

Ein guter Startpunkt, um mehr über Audiodateiformate zu lernen, ist dieser Wikipedia-Artikel: Audio file formats.

Mit Soundgeräten arbeiten, die eine feste Rate haben

Einige Soundgeräte können nur mit festen Samplerates arbeiten. Zum Beispiel könnte es sein, dass du versuchst, eine 22050-Hz-Datei mit einem Soundchip abzuspielen, der nur 48000 Hz verarbeiten kann.

Es gibt Audiowerkzeuge in der Packages- und Ports-Collection, die dieses Problem angehen, indem sie ein Rateresampling durchführen. Zum Beispiel hat x11/mplayer eine Option namens -srate, mit der die gewünschte Samplerate eingestellt werden kann. Du solltest diese dann auf die von deinem Soundgerät setzen. KDEs artsd und einige Spiele unterstützen ähnliche Optionen. Lies die Dokumentation deiner spezifischen Audioanwendung, um herauszufinden, ob ein Rateresampling unterstützt wird.

Künstlich erzeugter Klang

MIDI

Das »Musical Instrument Digital Interface«-Protokoll (MIDI), wird über MIDI-Devices verarbeitet. Wenn du keinen MIDI-Synthesizer hast, aber dennoch eine Standard-MIDI-Datei (»standard MIDI file«, SMF) abspielen möchtest, kannst du Software einsetzen, die MIDI-Daten rendert und aus ihnen Audiodateien erstellt. Standardmäßig rendert der audio/timidity-Port MIDI-Dateien und spielt sie auf einem Audiodevice ab:
$ timidity file.mid

MOD

Ein Soundtrackermodul ist ein binäres Format, welches Audiosamples in einer geordneten Befehlsreihenfolge mischt. Dies macht es möglich, eher lange Stücke digitalisierter Musik in einer vernünftigen Qualität abzuspielen.

Der einfachste Weg, deine favorisierten MOD-Dateien unter OpenBSD abzuspielen, ist wahrscheinlich, die XMMS-Software zu benutzen. Diese ist in den Ports und Packages verfügbar. Du solltest das Subpackage -mikmod installieren, damit XMMS die MikMod-Bibliothek nutzen kann, welche das MOD-, S3M-, IT- und XM-Modul-Format unterstützt.

Du kannst darüber hinaus noch andere sogenannte Tracker in der audio-Ports- und Packagesektion finden. Beispiele hierfür sind tracker und soundtracker. Mit diesen Trackern kannst du nicht nur Dateien abspielen, sondern auch eigene Module erstellen. Beachte jedoch, dass nicht jedes Trackerformat von den Programmen in den Ports unterstützt wird. Du bist aber stets willkommen, deinen favorisierten Tracker als Port hinzuzufügen.

13.3 - Wie kann ich Audio-CDs unter OpenBSD abspielen?

Um eine Audio-CD über den analogen Ausgang deines CD-ROM-Laufwerks abzuspielen, kannst du:

Ein nettes Kommandozeilenprogramm mit dem Namen cdio(1) wurde mit in das Standardsystem übernommen. Wird es ohne Parameter aufgerufen, arbeitet es im interaktiven Modus. Willst du die CD gleich abspielen lassen, dann benutze:

$ cdio play

Beachte, dass es vom ersten CD-ROM-Laufwerk liest. Standard ist cd0. Beachte auch, dass der aktive Benutzer auch die nötigen Rechte besitzt, um vom CD-ROM-Laufwerk lesen zu können (z. B. /dev/rcd0c). Da das Laufwerk standardmäßig nur von root und der Gruppe operator gelesen werden kann, solltest du der Einfachheit halber den Benutzer zur Gruppe operator hinzufügen, indem du die Zeile der Gruppe in /etc/group anpasst. Alternativ dazu kannst du die Rechte einfach anpassen.

Beachte, dass du eventuell den CD-Input des Mixers einschalten musst. Der tatsächliche Name des Inputs variiert von System zu System genau so, wie es bei der Ausgabe der Fall ist. Das Kommando wird aber diesem ähneln:

$ mixerctl inputs.cd.mute=off

Es sei erwähnt, dass es eine Vielzahl X11-basierter Spieler in der Ports- und Packagekollektion gibt, falls du lieber eine schöne GUI magst. Sieh einfach mal in der entsprechenden audio-Sektion nach.

13.4 - Kann ich OpenBSD benutzen, um Audiostücke aufzuzeichnen?

Ja. Um das zu tun, kannst du /dev/sound oder /dev/audio als Eingabelaufwerk benutzen.

Schaue dir zuerst die relevanten Aufnahmeparameter mit audioctl(1) an. Zum Beispiel:

record.encoding=mulaw
record.rate=8000
record.channels=1
record.precision=8
Hier benutze ich uneinheitliche Unterteilungen mit dem mu-law-Algorithmus, einem Kanal, einer Samplingrate von 8000 Hz und 8 Bit je Sample. Die Algorithmen mu-law und A-law sind besonders hilfreich bei der Digitalisierung von Sprachsignalen, da sie eine höhere Effizienz bei der Kodierung haben, d. h. dass die Qualität der Sprachsamples bei einer gegebenen Anzahl Bits vergleichsweise besser sein wird. Oder anders herum kann eine vorgegebene Qualität mit vergleichsweise weniger Bits realisiert werden.

Solltest du dich entscheiden, die zuvor genannten Werte (nur diese!) zu verwenden, so kannst du das /dev/audio-Laufwerk benutzen, welches diese Werte standardmäßig schon verwendet; die Werte müssen nicht extra gesetzt werden.

Stelle als nächstes sicher, dass das richtige Quelllaufwerk gewählt ist und die Quelldatei ungedämpft ist. Du kannst die erforderlichen Parameter mit mixerctl(1) setzen. Als Beispiel:

inputs.mic.mute=on
inputs.mic.preamp=on
inputs.mic.source=mic0
record.source=mic
record.volume=255,255
record.volume.mute=off
record.mic=0
record.mic.mute=off
In diesem Beispiel habe ich von einem Mikrofon aufgenommen. Vorverstärkung ist aktiviert. Es ist sonst möglich, dass der aufgenommene Klang sehr leise ist.

Benutze für die eigentliche Aufnahme cat(1) oder dd(1):

$ dd if=/dev/audio of=myvoice.raw
Drücke [STRG]-C, um die Aufnahme zu beenden. Die Ausgabe ist eine rohe Folge von Bytes. Dieser Sound kann abgespielt werden, wie es in der Sektion Unterschiedliche Audiotypen abspielen beschrieben wird. Für einen schnellen Test (in Annahme der korrekten Parameter):
$ dd if=myvoice.raw of=/dev/audio

Es sei nochmal erwähnt: Wenn du andere Kodierungsparameter setzt, solltest du das /dev/sound-Laufwerk benutzen. Weitere Beispiele für Kodierungsparameter:

record.encoding=slinear_le
record.rate=22050
record.channels=2
record.precision=8
Dies wird zu einer PCM führen, die »signed linear (uniform) quantization« bei einer Samplingrate von 22050 Hz in Stereo beinhaltet, die in einer Littleendian-Bytereihenfolge gespeichert wird, und 8 Bits verwendet, um ein Sample wiederzugeben (2^8 = 256 Quantifizierungsebenen).

Hinweis: Du möchtest deine Aufnahme, die jetzt im rohen Format (ohne Header) vorliegt, in ein Format konvertieren, mit dem du sie dann besser weiterverarbeiten kannst. Lies FAQ 13 - Konvertierung, um mehr darüber zu erfahren.

13.5 - Wie verwende ich meine MIDI-Instrumente?

Das »Musical Instrument Digital Interface«- (MIDI) Protokoll bietet standardisierte und effiziente Hilfsmittel, um musikalische Aufführungsinformationen als elektronische Daten zu repräsentieren. MIDI-Daten enthalten lediglich Anweisungen für einen Synthesizer, um Klänge abzuspielen, statt die Musik an sich. Weitere Informationen: Tutorial on MIDI and Music Synthesis

Um MIDI-Daten abspielen zu können, muss ein Synthesizer über einen MIDI-Port an der Maschine angeschlossen sein. Dementsprechend wird auch ein MIDI-Instrument benötigt, um MIDI-Daten aufzuzeichnen (z. B. ein MIDI-Keyboard). Auf einigen Soundkarten befinden sich eingebettete MIDI-Synthesizer, die als MIDI-Ports erkannt werden. Fortgeschrittene MIDI-Instrumente können mehrere Unterkomponenten enthalten (Synthesizer, Keyboards, Mischpulte etc.), diese werden unter OpenBSD als weitere MIDI-Ports aufgelistet.

Wenn du OpenBSD bereits in Betrieb genommen hast, schau in der Ausgabe des dmesg(8)-Kommandos nach, welche MIDI-Ports gefunden wurden. Eine Beispielauflistung der MIDI-Ports in einer Ausgabe von dmesg ist:

midi0 at pcppi0: <PC speaker>
umidi0 at uhub2 port 2 configuration 1 interface 0 "Roland Roland XV-2020" rev 1.10/1.00 addr 2
midi1 at umidi0: <USB MIDI I/F>
umidi1 at uhub1 port 2 configuration 1 interface 1 "Evolution Electronics Ltd. USB Keystation 61es" rev 1.00/1.25 addr 3
midi2 at umidi1: <USB MIDI I/F>
Es werden drei MIDI-Ports aufgelistet, dabei handelt es sich um: Um dein MIDI-Keyboard zu testen, kannst du das Werkzeug hexdump(1) verwenden. Die gespielten MIDI-Daten können wie folgt angezeigt werden:
$ hexdump -e '1/1 "%02x\n"' </dev/rmidi2 
90
3c
71
...
Die Ausgabe des Keyboards kann wie folgt direkt zur Eingabe des Synthesizers weitergeleitet werden:
$ cat -u /dev/rmidi1 >/dev/rmidi2
Nun kannst du über den Synthesizer hören, was du auf dem MIDI-Keyboard spielst. Die Informationen darüber, was du gerade spielst, werden tatsächlich in Echtzeit von /dev/rmidi1 an /dev/rmidi2 gesendet. Bitte lies die midi(4)-Manualseite für weitere Informationen.

Das Hauptwerkzeug zum Abspielen von Standard-MIDI-Dateien ist midiplay(1). Standard-MIDI-Dateien abspielen ist ganz einfach möglich (in diesem Beispiel über den Synthesizer):

$ midiplay -d 1 file.mid
Beachte, dass wir die MIDI-Gerätenummer 1 (d. h. /dev/rmidi1) als Parameter angegeben haben, da standardmäßig Gerätenummer 0 verwendet wird.

Um MIDI-Dateien aufzunehmen, kannst du das smfrec-Werkzeug verwenden, das sich im audio/midish-Port befinden, zum Beispiel:

$ smfrec -d /dev/rmidi1 -i /dev/rmidi2 file.mid
Hiermit wird aufgezeichnet, was auf dem Keyboard (/dev/rmidi2) gespielt wird , während es in Echtzeit an den Synthesizer (/dev/rmidi1) gesendet wird, so dass du hören kannst, was du gerade spielst. Komplizierte Anwendungen wie Editieren, Routing und Mixen sowie Transformieren von MIDI-Daten können mit dem rmidish-Werkzeug im audio/midish-Port realisiert werden.

13.6 - Was gibt es über Ogg-Vorbis- und MP3-Encoding zu sagen?

Diese Formate wurden bereits in der Sektion Unterschiedliche Audiotypen abspielen aufgeführt. In dieser Sektion werden wir eine kurze Einführung in die Kodierung solcher Dateien geben. Wenn du interessiert bist, etwas über die Kompressionscodecs zu lernen, kannst die Wikipedia-Artikel über Vorbis und MP3 lesen.

Ogg Vorbis

Die Kodierung von einem rohen, WAV- oder AIFF-Audioformat in Ogg Vorbis kann mit dem Programm oggenc durchgeführt werden, welches in dem Package audio/vorbis-tools enthalten ist. Dies kann aus den OpenBSD-Ports oder -Packages bezogen werden.

Nehmen wir an, du hättest eine Anzahl WAV-Dateien, die bereit sind, kodiert zu werden - beispielsweise dein Lieblingsalbum, welches du von der CD extrahiert hast. Um alle diese Dateien mit einer ungefähren Bitrate von 192 kbps zu kodieren, könntest du das folgende Kommando verwenden:

$ oggenc *.wav -b 192
Wenn der Vorgang beendet ist, wirst du einen Satz .ogg-Dateien im aktuellen Verzeichnis finden. Weitere ausführliche Beispiele sowie Optionen für die Kodierung sind im oggenc-Manual zu finden.

MPEG-1 Audio Layer 3 (MP3)

Solltest du das MP3-Format nutzen wollen, so kannst du den »Lame ain't an MP3 encoder« (LAME) benutzen, ein erklärendes Programm um mehr über MP3-Kodierung zu lernen. Lame ist im OpenBSD-Ports-Tree enthalten. Wegen der MP3-Patente ist das Package nicht auf den offiziellen CD-Sets zu finden.

Nachfolgend ein kleines Beispiel einer Kodierung einer WAV-Datei mit einer Bitrate von 192 kbps:

$ lame -b 192 track01.wav track01.mp3
Für alle Optionen und Details, schaue bitte in das mitgelieferte Manual zu Lame.

13.7 - Wie kann ich Video-DVDs unter OpenBSD abspielen?

OpenBSD unterstützt DVD-Medien über das ISO-9660-Dateisystem, das ebenfalls auf CD-ROMs genutzt wird, und - seit OpenBSD 3.8 - ebenfalls über das neuere Universal-Disk-Format- (UDF-) Dateisystem, das man auf einigen DVDs vorfinden kann. Die meisten DVD-Videos und DVD-ROMs verwenden jedoch das UDF-Bridgeformat, welches eine Kombination von DVD-MicroUDF (ein Teil von UDF 1.0) und dem ISO-9660-Dateisystem ist. Es wird als Abwärtskompatibilität genutzt.

Da die meisten Computer mit DVD-ROM-Laufwerken softwareseitige Dekodierung verwenden ist es empfehlenswert, mindestens einen Pentium II mit 350 MHz zu verwenden, um eine gute Wiedergabequalität zu erhalten.

Einige populäre Mediaprogramme, die DVDs abspielen können, wurden auf OpenBSD portiert. Beispiele sind ogle, mplayer, xine und kaffeine. Bitte lies die Installationsanweisungen, die im entsprechenden Package mitgeliefert werden, denn die Programme könnten vorher noch konfiguriert werden müssen. Mit diesen Programmen ist es möglich, die DVD durch direkten Zugriff auf die Rohdaten abzuspielen. Selbstverständlich kann man die DVD auch zuerst mit mount_cd9660(8) mounten und sie dann von diesem oder von einem anderen gemounteten Dateisystem abspielen.

Anmerkung:

13.8 - Wie brenne ich CDs und DVDs?

13.8.1 - Einführung und grundlegende Einrichtung

Stelle zunächst sicher, dass dein CD/DVD-Brenner von deinem Kernel erkannt und konfiguriert worden ist. Die meisten SCSI-Laufwerke werden unterstützt. IDE/ATAPI- und USB-Laufwerke werden durch SCSI-Emulation unterstützt. Dein Laufwerk kannst du schnell in der Ausgabe von dmesg(8) finden. Suche einfach Zeilen, die mit cd beginnen. Als Beispiel:
cd0 at scsibus0 targ 0 lun 0: <TOSHIBA, CD-ROM XM-5702B, 2826> SCSI0 5/cdrom removable
cd1 at scsibus1 targ 4 lun 0: <PLEXTOR, CD-R PX-R412C, 1.04> SCSI2 5/cdrom removable

Aber cdrecord -scanbus funktioniert nicht!

Das stimmt. OpenBSD nutzt unterschiedliche Namensplatzhalter für Laufwerke als das Betriebssystem, worauf das cdrecord-Programm geschrieben worden ist. Alle konfigurierten Laufwerke sollten in der Ausgabe von dmesg - wie soeben gezeigt - erscheinen. Die Information, die du brauchst, ist hier zu finden.

Error: mount_cd9660: /dev/cd2c on /mnt/cdrom: No such file or directory

Standardmäßig erstellt der OpenBSD-Installer nur 2 Laufwerkseinträge: für cd0 und cd1. Um ein cd2-Laufwerk zu benutzen, musst du den entsprechenden Laufwerkseintrag selbst erstellen. Der empfohlene Weg, dies zu tun, ist das MAKEDEV(8)-Skript (wähle die entsprechende Plattform aus):
# cd /dev
# ./MAKEDEV cd2^
In den folgenden Teilen werden wir auf den CD/DVD-Brenner meistens durch die »rohe Charaktergerätedatei« und nicht das block-Laufwerk zugreifen.

CD/DVD-Brenneroperationen überprüfen

Es ist empfohlen, stets zu prüfen, ob der CD/DVD-Brenner korrekt arbeitet. In diesem Beispiel benutzen wir diesen USB-2.0-DVD-Brenner:
cd2 at scsibus2 targ 1 lun 0: <LITE-ON, DVDRW LDW-851S, GS0C> SCSI0 5/cdrom removable
Benutze ihn, indem du eine CD/DVD darin mountest. Wenn erwünscht, kannst du auch die Übertragungsrate messen, wenn du Dateien von dem CD/DVD-Laufwerk auf die Festplatte kopierst. Das time(1)-Kommando wird ein williger Helfer sein.

Wenn hier irgendwelche Fehler auftreten, ist es weise, diese Fehler zunächst zu beheben, bevor du probierst, CDs/DVDs zu beschreiben.

Ich möchte jetzt meine CD beschreiben. Können wir anfangen?

Bevor wir weitermachen, ein paar Worte darüber, was man berücksichtigen sollte:

13.8.2 - CDs brennen

Daten-CD-ROMs erstellen

Zunächst wirst du ein ISO-9660-Dateisystem auf der CD-ROM erstellen wollen. Um das zu tun, kannst du mkhybrid(8) aus dem Basissystem oder das mkisofs-Werkzeug verwenden, das sich im cdrtools-Package befindet und mit größeren Dateistrukturen besser umgehen kann. Im folgenden Beispiel verwenden wir mkhybrid - der Aufruf von mkisofs ist sehr ähnlich.

Als Beispiel sagen wir, dass wir die OpenBSD-Kernelquellen in einem ISO-9660-Image speichern wollen.

$ mkhybrid -R -o sys.iso /usr/src/sys

Using ALTQ_RMC.000;1 for  /usr/src/sys/altq/altq_rmclass_debug.h (altq_rmclass.h)
...
Using IEEE8021.00H;1 for  /usr/src/sys/net80211/ieee80211_amrr.c (ieee80211.c)
 10.89% done, estimate finish Sat Nov  3 08:01:23 2007
 21.78% done, estimate finish Sat Nov  3 08:01:28 2007
...
 87.12% done, estimate finish Sat Nov  3 08:01:31 2007
 98.01% done, estimate finish Sat Nov  3 08:01:32 2007
Total translation table size: 0
Total rockridge attributes bytes: 896209
Total directory bytes: 2586624
Path table size(bytes): 11886
Max brk space used 0
45919 extents written (89 Mb)

Die Option -R sagt mkhybrid, dass die Rock-Ridge-Erweiterungen in dem ISO-9660-Image zu erstellen sein werden. Das »Rock Ridge Interchange«-Protokoll wurde entwickelt, um die POSIX-Dateisystemsemantik in ISO-9660-Dateisystemen zu unterstützen (z. B. lange Dateinamen, Benutzerrechte, Datei- und Softlinks, Laufwerksknoten, tiefe Dateihierachien [mehr als 8 Unterverzeichnisse] etc.)

Wenn du willst, dass lange Dateinamen auf deiner CD-ROM unter DOS und Windows gelesen werden können, dann solltest du die Option -J benutzen, um die Joliet-Erweiterung dem ISO-9660-Image hinzuzufügen.

Nachdem das Dateisystem erstellt worden ist, kannst du es überprüfen, indem du das ISO-9660-Image mountest. Wenn das in Ordnung ist, ist alles bereit, um die CD-R(W) zu brennen. Am einfachsten ist es, hierfür das cdio(1)-Werkzeug zu verwenden.

Wenn du wiederbeschreibbare CDs verwendest (wie zum Beispiel CD-RW), dann musst du das Medium erst löschen, bevor du es brennen kannst.

# cdio -f cd1c blank
Du kannst das zuvor erstellte ISO-Image nun auf eine unbeschriebene CD-R(W) brennen. Dazu kannst du folgendes Kommando verwenden:
# cdio -f cd1c tao sys.iso
Mit den gerade verwendeten Optionen sagen wir cdio, dass das zweite CD-ROM-Laufwerk als Brenner genutzt werden soll.

Um zu überprüfen, ob die CD korrekt gebrannt worden ist, kannst du sie mounten und prüfen, ob die Daten entsprechend vorhanden sind. Um das Dateisystem zu mounten, solltest du das block-Laufwerk für das CD-ROM-Laufwerk benutzen, welches in diesem Fall auch der CD-Brenner ist.

# mount /dev/cd1c /mnt/cdrom

Audio-CDs erstellen

Um Audio-CDs zu brennen, kannst du ebenfalls cdio(1) mit der Option tao -a verwenden.

Als Beispiel werde ich eine Sicherungskopie von einer meiner Musik-CDs erstellen. Dazu sind zwei Schritte nötig:

  1. Ziehe die Audiotracks von der originalen CD. Als Beispiel:
    # cdio -f cd1c cdrip
    
    Dieses Kommando extrahiert eine Reihe WAV-Dateien von deinem zweiten CD-ROM-Laufwerk auf deine Festplatte.
  2. Schreibe die Audiotracks auf eine leere CD. Zum Beispiel:
    # cdio -f cd1c tao -a *.wav
    

13.8.3 - DVDs brennen

Es gibt einige wichtige Dinge, die du über DVDs wissen solltest, bevor du anfängst, deine eigenen DVDs zu brennen.

Wichtige Anmerkungen:

Unterschiedliche DVD-Formate

Es gibt eine Menge unterschiedliche DVD-Formate. Üblicherweise werden die Formate DVD-R, DVD-RW, DVD+R und DVD+RW verwendet (R bedeutet, dass die DVDs einmal beschreibbar sind. RW bedeutet, dass sie einige tausendmal beschrieben werden können). Dies sind stark konkurrierende Standards.

Einen großen Unterschied stellt das DVD-RAM-Format dar, welches hauptsächlich als Datenlaufwerk entwickelt worden ist und erweiterte Paketschreibfunktionen bietet, was es möglich macht, es als eine Art optische Festplatte zu nutzen. Für die Benutzung im Zusammenhang mit Video wird DVD-RAM nicht empfohlen - das Format ist nicht kompatibel zu einem normalen DVD-Player.

Der sinnvollste Weg ist es, Medien zu verwenden, die zu deinem DVD-Brenner passen. Wenn du zu anderen DVD-Spielern kompatibel sein möchtest, dann gehe sorgfältig vor und lies diese Sektion der DVD-FAQ.

DVD-Brenngeschwindigkeit

Es könnte hilfreich sein, festzuhalten, dass die Angabe der DVD-Geschwindigkeit anders ist als die einer CD-ROM. Die folgende Tabelle gibt einen Überblick:

DVD-Lese/Schreibgeschwindigkeit Übertragungsrate (MB/s) Äquivalente CD-R(W)-Lese/Schreibgeschwindigkeit
1x 1,32 9x
2x 2,64 18x
4x 5,28 36x
8x 10,57 72x

Wie der Tabelle zu entnehmen ist, ist die Transferrate relativ hoch und du solltest prüfen, ob dein Bus (SCSI, [E]IDE/ATAPI, USB) genug Leistung bietet, um den Durchsatz zu gewährleisten. Besonders die älteren USB-1.0- und -1.1-Schnittstellen arbeiten mit langsameren Übertragungsraten wie 1,5 MBit/s und 12 MBit/s. Das bedeutet, dass USB 1.0 einen maximalen Durchsatz von 178,8 kByte/s und USB 1.1 einen maximalen Durchsatz von 1,43 MB/s hat. USB 2.0 ist mit 480 MBit/s bzw. 1,43 MB/s um einiges schneller. Allgemein kann man sagen, dass die Geschwindigkeit von SCSI- und (E)IDE/ATAPI-Bussen völlig ausreichend ist.

Brennen der DVD

Grundsätzlich kann man sagen, dass das Brennen von DVDs ähnlich dem Brennen von CD-ROMs ist. Die verwendete Software ist jedoch unterschiedlich. Derzeit ist die beste Möglichkeit growisofs aus dem sysutils/dvd+rw-tools-Package. Dieses Programm schreibt ein ISO-9660-Image auf die DVD. Es werden alle wiederbeschreibbaren DVD-Formate von den dvd+rw-tools unterstützt.

Für den Fall, dass du mehr über das Medium in deinem DVD-Brenner (z. B. wenn du die Informationsbeilagen verloren hast oder einfach nur - wie ich - schlecht organisiert bist) erfahren möchtest, kannst du das Programm dvd+rw-mediainfo benutzen. Es gibt zwei Möglichkeiten, eine DVD zu brennen:

Ich habe vorab ein ISO-9660-Image von den OpenBSD-CVS-Modulen (src, XF4, Ports und www) in meinem /cvs-Verzeichnis auf meiner Festplatte erstellt. Ich habe das folgende Kommando verwendet, welches dem zum Erstellen von CD-ROM-Images sehr ähnlich ist.

$ mkisofs -R -o cvs.iso /cvs
Wenn erwünscht, teste das ISO-9660-Dateisystem, indem du das Image mountest. Um dieses Image (über 2 GB) auf eine leere DVD zu brennen, kann man Folgendes benutzen:
# growisofs -dvd-compat -Z /dev/rcd2c=cvs.iso
Executing 'builtin_dd if=cvs.iso of=/dev/rcd2c obs=32k seek=0'
/dev/rcd2c: pre-formatting blank DVD+RW...
/dev/rcd2c: "Current Write Speed" is 4.1x1385KBps.
  23822336/1545832448 ( 1.5%) @3.9x, remaining 5:19
  42172416/1545832448 ( 2.7%) @3.9x, remaining 5:20
  60522496/1545832448 ( 3.9%) @3.9x, remaining 4:54
...
1504706560/1545832448 (97.3%) @3.9x, remaining 0:07
1523318784/1545832448 (98.5%) @3.9x, remaining 0:04
1541898240/1545832448 (99.7%) @3.9x, remaining 0:00
/dev/rcd2c: flushing cache
/dev/rcd2c: writing lead-out
/dev/rcd2c: reloading tray
Die Option -Z sagt growisofs, dass es eine Initialsession auf mein DVD-Laufwerk brennen soll, welches an cd2 gebunden ist. Die Option -dvd-compat sagt, dass die DVD geschlossen werden soll, d. h. keine weiteren Brennvorgänge sind mehr möglich. Dies sollte eine bessere Kompatibilität zu Video-DVD-Spielern und älteren DVD-ROM-Einheiten bieten.

Beachte auch, wie growisofs die Geschwindigkeit anzeigt. In diesem Fall 3,9-fache DVD Geschwindigkeit. Das ist entsprechend der Kombination des Rohlings und des Brenners, wie auch dvd+rw-mediainfo anzeigt.

Wenn du zu wenig Platz hast, um vorab das ISO-9660-Image auf deiner Festplatte zu erstellen, dann kannst du es auch direkt auf die DVD brennen. Aber zuvor machen wir einen Testlauf, welcher das Erstellen eines ISO-9660-Images simuliert.

# growisofs -dry-run -Z /dev/rcd2c -R /cvs
Wenn dieses Kommando erfolgreich ist, dann starte es nochmal ohne -dry-run.
# growisofs -Z /dev/rcd2c -R /cvs

Es ist außerdem möglich, Daten zu einer bereits beschriebenen DVD hinzuzufügen, indem man die Option -M verwendet. Dann wird eine neue Session geschrieben.

# growisofs -M /dev/rcd2c -R /mydata
Für mehr Informationen über growisofs, lies bitte das Manual.

Wenn du den Brennvorgang abgeschlossen hast, so mounte die DVD und prüfe, ob alle Daten, die gebrannt werden sollten, auch tatsächlich vorhanden sind.

Warum erhalte ich nicht die zu erwartende Brenngeschwindigkeit?

Anstelle der zuvor beschriebenen Ausgabe könntest du Folgendes sehen:
   4784128/1545832448 ( 0.3%) @0.7x, remaining 26:50
   7929856/1545832448 ( 0.5%) @0.7x, remaining 29:05
  14123008/1545832448 ( 0.9%) @0.7x, remaining 27:06
...
was um einiges langsamer ist. Das bedeutet, dass du aus irgendwelchen Gründen nicht genug Datendurchsatz auf dem Bus hast, den dein DVD-Brenner verwendet. In dem vorigen Beispiel war der USB-DVD-Brenner an einer Maschine angeschlossen, auf der das ehci(4)-Laufwerk, das vom USB-2.0-Controller benutzt wird, nicht korrekt initialisiert werden konnte. Wie immer bist du herzlich eingeladen, Patches und Testergebnisse zu erstellen. Der DVD-Brenner fällt also zurück in seinen USB-1.1-Modus, welcher langsamer ist, und erhält somit einen reduzierten Datendurchsatz. Allerdings ist USB 1.1 auf 12 MBit/s begrenzt, was 1,43 MB/s oder 1,08-fache Brenngeschwindigkeit der DVD bedeutet. Der DVD-Brenner verwendet eine geringere Brenngeschwindigkeit, um das Risiko von Pufferunterläufen zu reduzieren.

13.9 - Ich möchte meine Mediendateien aber im Format XYZ haben.

Zwischen verschiedenen Audioformaten konvertieren

Lass uns davon ausgehen, dass du die Soundaufnahme aus FAQ 13 - Audioaufnahme weiter verarbeiten willst. Diese Aufzeichnung wurde im rohen Format abgespeichert. Es wäre sinnvoll, sie zu konvertieren, da das rohe Format keinen Header einfügt und die Aufnahmeparameter daher bei jeder Verwendung der Datei angegeben werden müssten.

Ein Soundkonvertierungswerkzeug ist audio/sox, das über Packages und Ports zur Verfügung steht. sox unterstützt AIFF-, AU-, MP3-, Ogg-Vorbis-, RIFF-WAV- und rohe Formate neben weiteren exotischen Formaten, auf die man treffen könnte. Es folgt ein Beispiel für die Konvertierung der Aufzeichnung zum RIFF-WAV-Format.

$ sox -U -c 1 -r 8000 -b myvoice.raw myvoice.wav
Beachte, dass die angegeben Parameter mit den Parametern übereinstimmen, die bei der Aufnahme angegeben wurden. Dies war nur ein Beispiel. Weitere audiobezogene Bibliotheken und andere Softwareprodukte können für die Audiokonvertierung genutzt werden.

Hinweis: Es ist nicht empfehlenswert, zwischen verschiedenen verlustbehafteten Kompressionsformaten zu konvertieren. Beispielsweise lassen MP3- und Vorbis-Formate unterschiedliche Stellen der originalen Audiowaveform fallen. Solltest du also eine MP3-Datei ins Ogg-Vorbis-Format konvertieren, dann wird das Resultat sich eventuell schlechter anhören als die Original-MP3.

Zwischen verschiedenen Audioformaten konvertieren

Es ist wichtig, eine klare Grenze zwischen folgenden Eigenschaften zu ziehen: Unter OpenBSD ist momentan die Unterstützung für MPEG- und AVI-Container am ausgereiftesten. Keine Werkzeuge im Ports-Tree können momentan Stream in MP4-Containern erstellen.

Zwei oft eingesetzte Werkzeuge sind multimedia/transcode und mencoder (Teil von x11/mplayer). Sie verwenden - oder könnten es - die libavcodec-Bibliothek als Teil des Ports graphics/ffmpeg, dessen Ausgabe gute Qualität hat. Du kannst selbstverständlich ffmpeg auch gleich direkt verwenden. Es sollte auch möglich sein, den XviD-Encoder aus multimedia/xvidcore zu nutzen.

Die Dokumentation, die in Form von Manualseiten und HTML-Dokumenten in /usr/local/share/doc vorliegt, beinhaltet viele Beispiele - daher wird DRINGEND dazu geraten, diese Dokumentation zu lesen.

13.10 - Ist es möglich, Streams unter OpenBSD abzuspielen?

Ja, ist es. Viele Audio- und Videostreams werden auf einer begrenzten Anzahl Plattformen problemlos funktionieren. Ein paar von ihnen nicht.

Diese Sektion soll keine ausführliche Liste aller funktionierenden Streamingformate sein, die auf irgendeiner Hardwarearchitektur funktionieren. Um mehr darüber zu erfahren, solltest du dich ausgiebig mit Streamingmedien auseinandersetzen. Eine etwas alte aber dennoch gute Einführung bietet dieses Kapitel über Streamingmedien des O'Reilly-Buchs mit dem Titel Designing Web Audio.

Das erste, was man einsehen sollte, ist dass es viele verschiedene Streamingprotokolle gibt. Das Streamingprotokoll definiert, wie die Streams über das Netzwerk gesendet werden. Sie wurden entwickelt, um eine effiziente Übertragung von Audio/Video über das Internet in Echtzeit bereitzustellen. Größtenteils ist das Streamingprotokoll ein Applikationsprotokoll (Schicht 7), welches entweder UDP oder TCP (Schicht 4) als Transportprotokolle nutzt. Das »User Datagram«-Protokoll UDP ist für diese Aufgaben sehr gut geeignet, da es keine Rückantworten auf die Pakete erfordert oder jegliche andere Netzwerklasten hervorruft. Viele spezialisierte aber proprietäre Protokolle wurden entwickelt, z. B. Microsoft Media Services (MMS) oder das »Real Time Streaming«-Protokoll (RTSP). Wie wir sehen werden wird auch HTTP (das wiederum TCP nutzt) ebenfalls verwendet, obwohl es keine Möglichkeit bietet, Streams bei einer konstanten Bitrate anzubieten, wie es etwa UDP, RTSP und MMS machen.

Ebenso gibt es ein Streamingformat, das definiert, wie die Audio/Videodaten organisiert und abgespielt werden können. Die am weitesten verbreiten Formate sind MP3, Real Audio (RA, RM) und Windows Media (ASF) - alles proprietäre Technologien. Ab und zu könntest du auch auf einen Stream treffen, der das offene Ogg-Vorbis-Format nutzt.

Um ein Beispiel zu liefern, werde ich ein paar Schritt erklären, wie man Radio 1 hören kann - einen der belgischen Nationalradiosender. Browsereingebettete Plugins stehen unter OpenBSD nicht zur Verfügung, daher muss man etwas mehr tun als nur ein einfaches »click and play«.

Windows-Media- (AFS-)Streams funktionieren meistens auch, obwohl sie Daten beinhalten könnten, die nur durch den graphics/win32-codecs-Port verarbeiten werden können, welcher auch nur auf i386 läuft (»pkg_info win32-codecs« wird dir sagen, welche Codecs unterstützt werden). Einige Real-Audio-Streams können mit Hilfe von mplayer auf i386 angesehen werden, wenn er in Verbindung mit den Ports graphics/win32-codecs und emulators/fedora/base genutzt wird (lies diesen Thread der Ports-Mailingliste).

13.11 - Kann ich mit meinem Webbrowser Java verwenden? (nur i386 u. amd64)

Das Java-Plugin ist Teil des Java Development Toolkits (JDK). Lizenzprobleme machen es OpenBSD unmöglich, Binärpackages des JDKs auszuliefern. Das bedeutet, dass du es aus den Ports installieren musst. Weitere Informationen über das Erzeugen des JDKs kannst du in FAQ 8 - Programmiersprachen erhalten. Sobald du mit dem Übersetzen vom JDK fertig bist kannst du entscheiden, ob du das gesamte JDK-Package oder nur die Java-Laufzeitumgebung (JRE) installieren möchtest, welches sich in einem Subpackage befindet und das Browserplugin beinhaltet.

Nach der Installation werden Instruktionen angezeigt, wie man das Java-Plugin mit den Webbrowsern Firefox oder Seamonkey verwendet. Erstelle die symbolischen Verknüpfungen wie es beschrieben wird. Du solltest dann das Java-Plugin nach dem Eingeben von »about:plugins« in der Adresszeile sehen können.

Für KDEs Webbrowser Konqueror muss sich die java-Binary entweder im PATH befinden oder der absolute Pfadname über das Menü Settings -> Configure Konqueror -> Java & JavaScript angegeben werden. Standardmäßig befindet sich die java-Binary in /usr/local/jre-version/bin/ oder /usr/local/jdk-version/bin/; je nachdem, ob du das JRE oder das JDK installiert hast.

Hinweis: Java-Unterstützung wurde nur mit den Webbrowsern Firefox, Seamonkey und Konqueror getestet. Wenn es auch mit anderen Browsern gut funktioniert, lass es uns bitte wissen.

13.12 - Kann ich mit meinem Webbrowser Flash verwenden? (nur i386)

Das Flash-Plugin wird von Adobe nur in Binärform ausgeliefert. Adobe bietet kein natives OpenBSD-Plugin an - es gibt aber ein Linux-Plugin, das du unter Verwendung der Linux-Emulation nutzen kannst. Dieses Plugin steht nur für die i386-Plattform bereit.

Es ist eine gute Idee, etwas über die Linux-Emulation in der compat_linux(8)-Manualseite nachzulesen bevor du weitermachst - sinnvoll wäre auch FAQ 9 - Linux-Binarys unter OpenBSD ausführen.

Wenn du die Thematik verstanden und die benötigten Dateien noch nicht installiert hast, installiere einfach das Fedora-Package. Angenommen, dass deine Umgebungsvariable PKG_PATH gesetzt ist (siehe FAQ 15),

# pkg_add fedora_base
Dies wird kern.emul.linux=1 automatisch setzen - aber nicht permanent. Wenn du dauerhaft Linux-Emulation benötigst, kannst du das in /etc/sysctl.conf setzen (wird in FAQ 9 - Linux-Binarys unter OpenBSD ausführen erläutert).

Eine weitere Sache, die du wissen solltest, ist dass Shared Librarys und Module von Linux nicht mit OpenBSD-Programmen genutzt werden können, sodass du ebenfalls einen Linux-Browser benötigst.

Ein Kandidat hierfür ist der Webbrowser Opera, der über den Ports-Tree installiert werden kann. OpenBSD bietet hierfür keine Packages an, da die Lizenz von Opera die Weiterverbreitungsbestimmungen nicht klar genug abdeckt. Die Installation sollte aber nicht allzu lang dauern, da der Browser in binärer Form von Opera Software ausgeliefert wird. Hiernach kannst du einfach das Flash-Plugin über den Ports-Tree installieren.

# cd /usr/ports/www/opera
# make install
# cd /usr/ports/www/opera-flashplugin
# make install

Hinweis: Es sollte vollkommen ausreichen, nur den letzten Schritt auszuführen, da das Portssystem die Abhängigkeiten automatisch installieren wird. Wir haben diesen Prozess aber in mehrere Schritte aufgeteilt, damit wir diese besser erläutern konnten.

Wenn du dich an diese Anleitungen gehalten hast, dann wird das Flash-Plugin aufgelistet sobald du »about:plugins« in der Adressleiste eingegeben hast.

[FAQ-Index] [Zum Kapitel 12 - Hardware- und plattformspezifische Fragen] [Zum Kapitel 14 - Platteneinrichtung]


[zurück] www@openbsd.org