[OpenBSD]

[FAQ-Index] [Zum Kapitel 12 - Hardware- und Plattformspezifische Fragen] [Zum Kapitel 14 - Festplattenkonfiguration]

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 Handbuchseite 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 Handbuchseite 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

Das Basissystem von OpenBSD bietet zwei Werkzeuge für die Überwachung und die Konfiguration von Audiogeräten. audioctl(1) wird für die Parameter der Audio-Verarbeitung, wie Kodierung, Sample-Rate und die Kanalzahl benutzt, wohingegen mixerctl(1) für die Mixer-Parameter, wie Kanalquelle, Gain-Niveau und Stummschaltung.

Die folgenden Kommandos nutzen audioctl(1), um die standardmäßigen Verarbeitungsparameter eines Audiogerätes anzuzeigen.

$ audioctl -f /dev/audio
...
Beachte, dass -f /dev/audio explizit angegeben wurde. Das Öffnen von /dev/audio setzt das Audiogerät auf seine Standard-Parameter zurück, und diese wollten wir sehen.

audioctl(1) ist ebenfalls sehr nützlich, um die Möglichkeiten eines Audiogerätes herauszufinden. Zum Beispiel, um zu sehen, ob ein Gerät einige übliche Sample-Raten unterstützt, könntest du einfach versuchen, die Wiedergabegeschwindigkeit zu setzen:

$ audioctl play.rate=48000
play.rate: -> 48000
$ audioctl play.rate=44100
play.rate: -> 44100
$ audioctl play.rate=22050
audioctl: set failed: Invalid argument
$ audioctl play.rate=8000
audioctl: set failed: Invalid argument
$
Dieses Gerät unterstützt eine Wiedergabegeschwindigkeit von 48000 und 44100 Hz, nicht jedoch 22050 oder 8000. Anzumerken ist, dass nicht für alle nicht-unterstützten Sample-Raten eine Fehlermeldung gezeigt wird, sondern manchmal nur die zurückgegebene Sample-Rate nicht die gewünschte ist.
$ audioctl play.rate=48000
play.rate: -> 48000
$ audioctl play.rate=44100
play.rate: -> 48000
$ audioctl play.rate=22050
play.rate: -> 48000
$ audioctl play.rate=8000
play.rate: -> 48000
$
Dieses Gerät unterstützt nur die Wiedergabe mit 48000 Hz.

Audio-Hardware besitzt normalerweise zumindest minimale Mixerfähigkeiten. Der Aufruf von mixerctl(1) ohne jegliche Kommandozeilenargumente listet alle Mixerregler des Geräts, sowie ihre aktuellen Einstellungen auf.

$ mixerctl
...
Einige Geräte besitzen nur eine Handvoll Regler, andere hundert und mehr. Es muss gesagt werden, dass nicht alle Optionen aller Audio-Chips notwendigerweise die Außenwelt erreichen. So kann es z. B. passieren, dass mehr Ausgänge aufgelistet werden als physisch auf der Soundkarte oder der Hauptplatine vorhanden sind.

Es gibt einige Regler, die vielen Geräten gemein sind:

Die Regler eines Audiogeräts können unterschiedlich etikettiert sein. Zum Beispiel ist es möglich, dass kein outputs.master so wie oben existiert, sondern stattdessen ein diesselbe Funktionalität bereitstellender outputs.outputs. Normalerweise besitzen die Regler aussagekräftige Etikette, aber manchmal muss man einfach einige unterschiedliche Einstellungen ausprobieren, um zu sehen, welche Wirkung ein Regler hat.

Einige Geräte nutzen etwas, das unter dem Namen »EAPD« bekannt ist, was für »external amplifier power down« steht. Allerdings ist auch dies nur ein weiterer An/Aus-Schalter. Es wird vielleicht deshalb »power down« genannt, weil es oft für Energiesparmodi genutzt wird, was bedeutet, dass dieser Reglertyp häufiger in Laptops zu finden ist. Manchmal ist es notwendig Regler, die eapd oder extamp Bestandteile in ihrem Namen aufweisen, of on zu setzen, um ein Ausgangssignal zu bekommen.

Als ein einfaches Beispiel einer typischen Benutzung von mixerctl, muss man Folgendes tun, um die Lautstärke des linken und rechten Kanals auf 200 einzustellen:

$ mixerctl outputs.master=200,200
outputs.master: 255,255 -> 207,207
Beachte, dass der Wert 207 wird. Der Grund hierfür ist, dass dieses Audiogerät einen AC'97-Codec nutzt, der nur 5 Bits für die Lautstärkekontrolle verwendet. Dies führt zu gerade einmal 32 möglichen Werten. Andere Hardware könnte eine andere Auflösung nutzen.

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

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

Damit diese Änderung bei jedem Systemstart vorgenommen wird, bearbeite /etc/mixerctl.conf, zum Beispiel:

$ cat /etc/mixerctl.conf
outputs.master=200,200
outputs.master.mute=off
outputs.headphones=160,160
outputs.headphones.mute=off

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), reinen PCM-Dateien (ohne Header) und RIFF-WAV-Dateien.

OpenBSD beinhaltet aucat(1), einem Programm zum Aufnehmen und Abspielen von unkomprimierten Audio. Das folgende Beispiel spielt eine WAV-Datei ab:

$ aucat -i filename.wav
aucat(1) unterstützt mit Hilfe der Kommandozeilenoption -i sowohl Audiodateien ohne »Header« als auch WAV-Dateien. aucat spielt ebenfalls Sun-Audiodateien ab, deren Daten im Format 8 KHz Mono mu-law vorliegen, was die übliche Kodierung dieses Dateityps darstellt.

Es ist ebenfalls möglich, unkomprimierte Audiodaten abzuspielen, indem diese Daten direkt an das Audiogerät übergeben werden. Um dies zu ermöglichen müssen die Hauptparameter dieser Daten bekannt sein: Kodierungstyp, Kanalzahl, Sample-Rate, Anzahl der Bits pro Sample. Sind diese Parameter nicht bekannt, ist es eventuell möglich, sie mit Hilfe von file(1) herauszufinden:

$ 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 »Little-Endian«-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.

Selbstverständlich gibt es noch andere Programme, mit denen man diese Dateien abspielen kann. Wie zum Beispiel XMMS, das als Paket und Portierung verfügbar ist, und zahlreiche Audioformate abzuspielen in der Lage ist.

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 Portierungen oder Paketen 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 Paket 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 Portierungsliste oder der Pakete.

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.

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 Portierungen und Paketen verfügbar. Du solltest das Unterpaket -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-Portierungs- und Paketsektion 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 Portierungen unterstützt wird. Du bist aber stets willkommen, deinen favorisierten Tracker als Portierung hinzuzufügen.

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

Es ist sowohl möglich, Audio-CDs von dem CD-ROM-Laufwerk abspielen zu lassen, indem man dieses die analogen Audiodaten direkt an die Soundkarte senden lässt, als auch durch das Auslesen der Audiodaten und dem Senden der digitalen Samples an die Soundkarte über den PCI-Bus.

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

Dieses Kommando nutzt standardmäßig das erste CD-ROM-Laufwerk, cd0. Es ist zu beachten, dass der Benutzer, der cdio ausführt, die nötigen Rechte für das Lesen des CD-ROM-Geräts (z. B. /dev/rcd0c) benötigt. Da dieses Gerät 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 können auch die Zugriffsrechte auf das Geät selbst angepasst werden.

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 ist ebenfalls möglich, dass keine analoge Verbindung zwischen dem CD-ROM-Laufwerk und dem Audiogerät vorliegt. In diesem Fall kann man cdios cdplay-Kommando benutzen, um die Audiodaten der CD-ROM direkt über den PCI-Bus an die Soundkarte zu schicken.
$ cdio cdplay

Es sei erwähnt, dass es eine Vielzahl X11-basierter Spieler in der Portierungs- und Paketkollektion 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 Audiosamples aufzuzeichnen?

Ja. Die meisten Geräte unterstützen Aufnahmen. aucat(1) ist in OpenBSD enthalten und kann für Aufnahmen verwendet werden.
$ aucat -o file.wav
Das obige Kommando beginnt mit der Aufnahme einer Datei im WAV-Format. Benutze [CTRL]-C ([Steuerungstaste]-C), um die Aufnahme zu beenden. Die Datei wird aus vorzeichenbehafteten 16 Bit Stereosamples bestehen, die mit einer Sample-Rate von 48 KHz aufgezeichnet wurden. Andere Sample-Formate, Sample-Raten und eine andere Anzahl an Kanälen können für die Aufnahme verwendet werden. Siehe in das Handbuch für weitere Details.

Benutze aucat, um die Datei wiederzugeben:

$ aucat -i file.wav

Wenn die Aufnahme zu funktionieren schien, aber die Wiedergabe der Aufgabe still oder nicht wie erwartet war, so benötigt der Mixer eventuell ein wenig Konfigurationsarbeit. Stelle sicher, dass du das richtige Gerät auswählst, von dem aufgenommen werden soll, und das die Quelle nicht ausgedämpft (mute) ist. Du kannst die nötigen Parameter mittels mixerctl(1) setzen. Zum Beispiel:

inputs.mic.mute=off
inputs.mic.preamp=on
inputs.mic.source=mic0
record.source=mic
record.volume=255,255
record.volume.mute=off
record.mic=255
record.mic.mute=off
Dies sind die Einstellungen für die Aufnahme von einem Mikrofon. Vorverstärkung (»preamp«) ist angeschaltet, da ansonsten die aufgenommenen Geräusche auf einigen Systemen ziemlich leise sein können. Andererseits kann Vorverstärkung auf anderen Systemen auch sehr laut sein.

13.5 - Wie richte ich einen Audioserver ein?

Was der sndiod(1) Audioserver ist

Der Dämon sndiod(1) ist eine Zwischenschicht zwischen Audio- oder MIDI-Programmen und der Hardware. Es führt die nötigen Audio-Verarbeitungsschritte durch, um es jedwedem Programm zu erlauben, auf jeglicher unterstützter Hardware zu funktionieren. Es exponiert zumindest ein Untergerät, mit dem sich eine unbegrenzte Anzahl von Audioprogrammen verbinden kann, um es wie Audiohardware zu benutzen. Während der Wiedergabe empfängt sndiod gleichzeitig Daten von allen Programmen, mischt sie zusammen und sendet das Resultat an das Hardware-Gerät. Ebenso dupliziert es während der Aufnahme die Audiodaten, die von dem Hardware-Gerät empfangen werden und sendet sie an alle Programme.

Standardmäßig akzeptiert er nur Verbindungen von Programmen, die auf dem gleichen System laufen; es initialisiert sich selbst nur dann vollständig, wenn wirklich Programme seine Funktionalität in Anspruch nehmen, weshalb er eine vernachlässigbare Menge Systemressourcen verbraucht. Systeme ohne eingebaute Audiohardware können sndiod nutzen, um Geräte, die im laufenden Betrieb angeschlossen werden, praktisch ohne Kosten zu nutzen.

Brauche ich einen Audioserver?

Wenn die Anwendungen, die du nutzt, kompatibel mit deiner Hardware sind, und du nicht vorhast, mehrere Anwendungen gleichzeitig zu nutzen, dann benötigst du keinen Audioserver. Seit OpenBSD 5.1 wird der sndiod(1) standardmäßig während des Systemstarts gestartet. Es gibt nicht mehr Grund sndiod(1) auf Systemen ohne Audiohardware zu deaktivieren, als es Grund gibt, getty(8) auf System ohne Konsole zu deaktivieren.

Beachte, dass sndiod umgangen werden kann, indem man anstatt des standardmäßigen Audiogerätes rsnd/0 nutzt.

Welche Latenz benötige ich?

Latenz bezeichnet die Zeit die zwischen der Entscheidung des Programms ein Sample abzuspielen, und dem Moment vergeht, indem der Benutzer den Sample hört. Da Audiodaten immer gepuffert sind, ist diese Verzögerung proportional zu der Größe des Audiopuffers. Die folgenden Werte werden empfohlen: Je kleiner Audio-Puffer sind (um eine niedrige Latenz zu erzielen), desto größer ist die Wahrscheinlichkeit von Pufferüberläufen und -unterläufen. Pufferüberläufe/-unterläufe führen zu einem »stottern« des Sounds.

sndiod(1) erzwingt eine minimale Latenz für alle Audioanwendungen, und die standardmäßige Latenz liegt bei 160 ms. Wenn du planst, Anwendungen zu verwenden, die eine niedrigere Latenz benötigen, benutze die Option »-b« um die gewünschte Latenz (ausgedrückt in der Anzahl von Frames) auszuwählen. Zum Beispiel entsprechen bei 48000 Samples pro Sekunde 50 ms Latenz:

48000 samples/second x 0.050 seconds = 2400 samples
also füge:
sndiod_flags="-b2400"
zu /etc/rc.conf.local hinzu.

Verbessert eine niedrige Latenz die Audio/Video-Synchronisation

Nein. Die Synchronisation von Audio zu Video benötigt keine niedrige Latenz. Synchronisationsprobleme werden oft von der Software selbst verursacht (schlechte Implementierung, Fehler, ...). Die Anwendung dazu zu zwingen kleinere Puffer zu verwenden (durch das Starten von sndiod(1) in einem Modus mit niedriger Latenz) mag in einigen Fällen das tatsächliche Problem verdecken, und das Gefühl vermitteln, dass die Software besser läuft, aber offensichtlich ist es besser, nach dem eigentlichen Fehler zu suchen.

Wie benutze ich eine rechnerferne Soundkarte?

sndiod(1) kann konfiguriert werden, um Verbindungsanfragen aus dem Netzwerk anzunehmen und damit anderen Maschinen die Nutzung der Soundkarte zu erlauben. Auf dem entfernten System (dem mit der Soundkarte) füge:
sndiod_flags="-L-"
zu der Datei /etc/rc.conf.local hinzu. Konfiguriere dein Programm auf dem lokalen System wie folgt:
snd@hostname/0
wobei »hostname« die Adresse des entfernten Rechners ist. Die Umgebungsvariable AUDIODEVICE könnte auf obigen Wert gesetzt werden, um die entfernte Soundkarte zum Standard-Audiogerät zu machen.

Beachte, dass jedes System, dass in der Lage ist, sich mit dem TCP-Port 11025 zu verbinden in der Lage ist, das Audiogerät zu nutzen. Aus Gründen des Datenschutzes und des Schutzes der Intimsphäre kann nur ein Benutzer eines Systems gleichzeitig eine Verbindung herstellen. Wenn mehrere Systeme das Audiogerät simultan benutzen müssen, so muss der sndio(7) Autorisations-Cookie derselbe sein. So muss etwa der ~/.aucat_cookie an alle Benutzerkonten verteilt werden, die das Audiogerät nutzen könnten.

Um Pannen zu vermeiden, könnte der TCP-Verkehr auf Port 11025 durch den Packetfilter priorisiert werden. In der standardmäßigen Konfiguration konsumiert sndiod zirka 200 KB/s Netzwerkbandbreite.

13.6 - Was kann ich tun, wenn ich Audio-Probleme habe?

Wenn du beim Abspielen von Audio nichts hörst, ist es wahrscheinlich, dass ein Mixerregler niedrig eingestellt oder einfach ausgeschaltet ist. Lies den Abschnitt 13.1 Wie konfiguriere ich mein Audiodevice, um den Mixer zu konfigurieren. Bitte schalte alle Eingänge und Ausgänge an, bevor du ein Problem meldest.

Ist der Sound verzerrt, so kann es sein das deine Soundkarte nur eine einzige, oder nur ein beschränktes Set an Sample-Raten oder Kodierungen unterstützt. Lies den Abschnitt 13.1 Wie konfiguriere ich mein Audiodevice für Beispiele dafür wie man herausfindet, welche Parameter ein Audiogerät unterstützt.

Wenn dein Gerät nur unübliche Kodierungen oder nur eine oder nur einige wenige Sample-Raten unterstützt, und von dir benutzte Anwendungen die notwendigen Format-Konvertierungen nicht durchführen, so erwäge den Einsatz von aucat(1) als Audio-Server. Siehe den Abschnitt 13.5 - Wie richte ich einen Audioserver ein?

Treten immer noch Probleme auf, so sind hier einige prüfenswerte Dinge:

Wenn du glaubst, dass dein Gerät funktionieren sollte, es dies aber aus was auch immer für Gründen nicht tut, dann wird es Zeit für ein bißchen Debugging. Die folgenden Schritte können feststellen, ob Daten vom D/A-Wandler (»DAC«) verarbeitet werden.

$ cat > /dev/audio < /dev/zero &
[1] 9926
$ audioctl play.{seek,samples,errors}
play.seek=48000
play.samples=3312000
play.errors=0
$ audioctl play.{seek,samples,errors}
play.seek=57600
play.samples=7065600
play.errors=0
$ audioctl play.{seek,samples,errors}
play.seek=48000
play.samples=9379200
play.errors=0
$ kill %1
$ fg %1
cat > /dev/audio < /dev/zero
Terminated
Hier sehen wir, das sich der Zähler für die verarbeiteten Daten play.samples jedesmal erhöht, wenn wir ihn prüfen, also fließen Daten. Wir sehen ebenfalls, dass das Gerät genug Daten puffert play.seek, und dass das Gerät keinen Pufferunterlauf zu verzeichnen hat play.errors. Das ist auch gut.

Beachte, dass du, selbst für den Fall des Vorhandenseins angeschlossener Lautsprecher, während des obigen Tests nichts gehört haben solltest. Dieser Test sendet Nulls and das Gerät, was in allen aktuell unterstützten Standard-Kodierungen als Stille interpretiert wird.

Da wir wissen, dass das Gerät Daten verarbeiten kann, ist es eine gute Idee, erneut die Mixereinstellungen zu überprüfen. Stelle sicher das alle Ausgänge und alle Eingänge aktiviert und auf einen angemessenen Pegel eingestellt sind.

Solltest du an diesem Punkt immer noch Probleme, ist es wahrscheinlich Zeit, einen Fehlerbericht einzusenden. Bitte füge, zusätzlich zu den normalen Informationen eines Fehlerberichts, wie einer vollständigen »dmesg« und einer Beschreibung des Problems, auch die standardmäßige Ausgabe von mixerctl -v und die Ausgabe des obigen D/A-Wandler (»DAC«)-Signalverarbeitungstests hinzu.

13.7 - 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:

umidi0 at uhub2 port 2 configuration 1 interface 0 "Roland Roland XV-2020" rev 1.10/1.00 addr 2
midi0 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
midi1 at umidi1: <USB MIDI I/F>
Es werden drei MIDI-Ports aufgelistet, dabei handelt es sich um: Diese Geräte sind sndio(7) unter den Namen rmidi/0 und rmidi/1 bekannt. Um dein MIDI-Keyboard zu testen, kannst du das Werkzeug hexdump(1) verwenden. Die gespielten MIDI-Daten können wie folgt angezeigt werden:
$ aucat -Mq rmidi/1 -o - | hexdump -e '1/1 "%02x\n"'
90
3c
71
...
Die Ausgabe des Keyboards kann wie folgt direkt zur Eingabe des Synthesizers weitergeleitet werden:
$ aucat -M -q rmidi/0 -q rmidi/1
Nun kannst du über den Synthesizer hören, was du auf dem MIDI-Keyboard spielst. Die Handbuchseite von aucat(1) bietet 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 -f rmidi/0 file.mid

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

$ smfrec -d rmidi/0 -i rmidi/1 file.mid
Hiermit wird aufgezeichnet, was auf dem Keyboard (rmidi/1) gespielt wird , während es in Echtzeit an den Synthesizer (rmidi/0) 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 der audio/midish-Portierung realisiert werden.

13.8 - 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 Paket audio/vorbis-tools enthalten ist. Dies kann aus den OpenBSD-Portierungen oder -Paketen 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-Portierungsbaum enthalten. Wegen der MP3-Patente ist das Paket 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.9 - 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 Paket 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.10 - Wie brenne ich CDs und DVDs?

13.10.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. SATA-, 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.10.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-Paket 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-Abbild 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-Abbild 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-Abbild hinzuzufügen.

Nachdem das Dateisystem erstellt worden ist, kannst du es überprüfen, indem du das ISO-9660-Abbild 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-Abbild 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.10.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, IDE/ATAPI, SATA, 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-, SATA- und 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-Paket. Dieses Programm schreibt ein ISO-9660-Abbild 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-Abbild von den OpenBSD-CVS-Modulen (src, xenocara, 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.

$ mkhybrid -r -o cvs.iso /cvs
Wenn erwünscht, teste das ISO-9660-Dateisystem, indem du das Abbild in das Dateisystem einhängst. Um dieses Abbild (ü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-Abbild 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, Korrekturroutinen 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.11 - 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 als Paket und Portierung 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.

Zwei oft eingesetzte Werkzeuge sind multimedia/transcode und mencoder (Teil von x11/mplayer). Sie verwenden - oder könnten es - die libavcodec-Bibliothek als Teil der Portierung 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 Handbuchseiten und HTML-Dokumenten in /usr/local/share/doc vorliegt, beinhaltet viele Beispiele - daher wird DRINGEND dazu geraten, diese Dokumentation zu lesen.

13.12 - 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 die graphics/win32-codecs-Portierung verarbeiten werden können, welche 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 Portierungen graphics/win32-codecs und emulators/fedora/base genutzt wird (lies diesen Thread der Portierungs-Mailingliste).

13.13 - Kann ich mit meinem Webbrowser Java verwenden? (nur i386 und amd64)

Das Java-Plugin ist Teil des Java Development Toolkits (JDK). Lizenzprobleme machen es OpenBSD unmöglich, Binärpakets des JDKs auszuliefern. Das bedeutet, dass du es aus den Portierungen 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-Paket oder nur die Java-Laufzeitumgebung (JRE) installieren möchtest, welches sich in einem Unterpaket 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.14 - Kann ich mit meinem Webbrowser Flash verwenden? (nur i386)

Das Flash-Plugin wird von Adobe nur in Binärform ausgeliefert. Adobe bietet kein natives Plugin für OpenBSD an. In Anbetracht ihres Sicherheits-Vorgeschichte danken wir ihnen für diese Vernachlässigung.

Wenn du nur Videos im Flash-Format von den üblichen Webseiten anschauen möchtest, so gibt es eine Reihe geeigneter Paket-Optionen, einschließlich: get_flash_videos, minitube, youtube-dl, get_iplayer und yt. Außerdem hat das Gnash-Project in letzter Zeit große Fortschritte gemacht, und könnte deine Bedürfnisse erfüllen.

[FAQ-Index] [Zum Kapitel 12 - Hardware- und Plattformspezifische Fragen] [Zum Kapitel 14 - Festplattenkonfiguration]


[zurück] www@openbsd.org