[FAQ-Index] [Zum Kapitel 12 - Hardware- und Plattformspezifische Fragen] [Zum Kapitel 14 - Festplattenkonfiguration]
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.
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 -f /dev/audio ...
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:
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: -> 44100 $ audioctl play.rate=22050 audioctl: set failed: Invalid argument $ audioctl play.rate=8000 audioctl: set failed: Invalid argument $
Dieses Gerät unterstützt nur die Wiedergabe mit 48000 Hz.$ 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 $
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.
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.$ mixerctl ...
Es gibt einige Regler, die vielen Geräten gemein sind:
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:
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.$ mixerctl outputs.master=200,200 outputs.master: 255,255 -> 207,207
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
OpenBSD beinhaltet aucat(1), einem Programm zum Aufnehmen und Abspielen von unkomprimierten Audio. Das folgende Beispiel spielt eine WAV-Datei ab:
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.$ aucat -i filename.wav
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
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).$ file music.wav music.wav: Microsoft RIFF, WAVE audio data, 16 bit, stereo 44100 Hz
Leite als nächstes die Audiodatei durch ein Soundlaufwerk:play.encoding=slinear_le play.rate=44100 play.channels=2 play.precision=16
Wenn du die korrekten Werte gesetzt hast, solltest du das hören, was du erwartet hattest.$ cat music.au > /dev/sound
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.
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:
Selbstverständlich existieren Ogg-Vorbis-Plugins auch für andere Software.$ 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%
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.
$ timidity file.mid
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.
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:
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.$ mixerctl inputs.cd.mute=off
$ 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.
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.$ aucat -o file.wav
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:
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.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
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.
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.
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 samplesalso füge:
sndiod_flags="-b2400"zu /etc/rc.conf.local hinzu.
sndiod_flags="-L-"zu der Datei /etc/rc.conf.local hinzu. Konfiguriere dein Programm auf dem lokalen System wie folgt:
snd@hostname/0wobei »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.
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.
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:
Es werden drei MIDI-Ports aufgelistet, dabei handelt es sich um: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>
Die Ausgabe des Keyboards kann wie folgt direkt zur Eingabe des Synthesizers weitergeleitet werden:$ aucat -Mq rmidi/1 -o - | hexdump -e '1/1 "%02x\n"' 90 3c 71 ...
Nun kannst du über den Synthesizer hören, was du auf dem MIDI-Keyboard spielst. Die Handbuchseite von aucat(1) bietet weitere Informationen.$ aucat -M -q rmidi/0 -q rmidi/1
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:
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.$ smfrec -d rmidi/0 -i rmidi/1 file.mid
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:
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.$ oggenc *.wav -b 192
Nachfolgend ein kleines Beispiel einer Kodierung einer WAV-Datei mit einer Bitrate von 192 kbps:
Für alle Optionen und Details, schaue bitte in das mitgelieferte Manual zu Lame.$ lame -b 192 track01.wav track01.mp3
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:
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
In den folgenden Teilen werden wir auf den CD/DVD-Brenner meistens durch die »rohe Charaktergerätedatei« und nicht das block-Laufwerk zugreifen.# cd /dev # ./MAKEDEV cd2^
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.cd2 at scsibus2 targ 1 lun 0: <LITE-ON, DVDRW LDW-851S, GS0C> SCSI0 5/cdrom removable
Wenn hier irgendwelche Fehler auftreten, ist es weise, diese Fehler zunächst zu beheben, bevor du probierst, CDs/DVDs zu beschreiben.
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.
Du kannst das zuvor erstellte ISO-Abbild nun auf eine unbeschriebene CD-R(W) brennen. Dazu kannst du folgendes Kommando verwenden:# cdio -f cd1c blank
Mit den gerade verwendeten Optionen sagen wir cdio, dass das zweite CD-ROM-Laufwerk als Brenner genutzt werden soll.# cdio -f cd1c tao sys.iso
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
Als Beispiel werde ich eine Sicherungskopie von einer meiner Musik-CDs erstellen. Dazu sind zwei Schritte nötig:
Dieses Kommando extrahiert eine Reihe WAV-Dateien von deinem zweiten CD-ROM-Laufwerk auf deine Festplatte.# cdio -f cd1c cdrip
# cdio -f cd1c tao -a *.wav
Wichtige Anmerkungen:
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-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.
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.
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:$ mkhybrid -r -o cvs.iso /cvs
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.# 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
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.
Wenn dieses Kommando erfolgreich ist, dann starte es nochmal ohne -dry-run.# growisofs -dry-run -Z /dev/rcd2c -R /cvs
# 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.
Für mehr Informationen über growisofs, lies bitte das Manual.# growisofs -M /dev/rcd2c -R /mydata
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.
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.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 ...
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.
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.$ sox -U -c 1 -r 8000 -b myvoice.raw myvoice.wav
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.
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.
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«.
Es sieht so als, als könnte ich sogar zwischen schlechter, normaler und guter Qualität des Streams aussuchen. Andere Websites beinhalten einen JavaScript-Code, um die URL zu generieren. In diesem Fall ist der beste Ratschlag: Lies den HTML-Quelltext und die Skripte, auf die er verlinkt. Es ist gut möglich, dass du so die URL rekonstruieren kannst.$ ftp http://internetradio.vrt.be/dab/hoeluisteren/pc/help/gebruiksvoorwaarden/stream_11.m3U $ cat stream_11.m3U http://mp3.streampower.be/radio1-mid.mp3 http://mp3.streampower.be/radio1-low.mp3 http://mp3.streampower.be/radio1-high.mp3
$ mplayer -loop 0 http://mp3.streampower.be/radio1-mid.mp3
alias radio1='mplayer -loop 0 http://mp3.streampower.be/radio1-mid.mp3'
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.
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]