Warum kann ich unter Linux nicht mit / dev / dsp spielen?

12

Ich arbeite gerade an einem Linux-Lehrbuch, in dem es um Geräte geht. Es heißt, wenn ich den entsprechenden Ausgang an sende /dev/dsp, wird ein Ton abgespielt. Im Beispiel ist cat file.wav > /dev/dspfile.wav eine beliebige .wav-Datei.

Wenn ich das tue, wird mir die Erlaubnis verweigert. Wenn ich das mit sudo starte, wird mir die Erlaubnis trotzdem verweigert. Wenn ich das suzuerst mache, wird kein Ton abgespielt.

Warum bekomme ich die Erlaubnis verweigert sudo? Warum spielt kein Ton mit su?

Korgan Rivera
quelle
1
Stellen Sie sicher, dass sich Ihr Benutzer in der audioGruppe befindet.
Carl Groner
Möglicherweise müssen Sie auch sicherstellen, dass es sich bei Ihrer WAV-Datei um RAW-Audio handelt - nicht alle WAV-Dateien sind RAW-Dateien.
Drake Clarris
@DrakeClarris, dies würde zur Ausgabe von Rauschen führen, kein Fehler, dem die Berechtigung verweigert wurde.
cjm
@cjm Ich dachte mehr an die Stille beim Spielen mit su
Drake Clarris

Antworten:

14

/dev/dspist ein Teil von OSS, der seit ... langer Zeit nicht mehr zum Linux-Kernel gehört. Es wird seit langem von ALSA abgelöst, das unterschiedliche Geräte, unterschiedliche Programme und eine unterschiedliche API verwendet.

Es gibt jedoch ein Emulationsebenenmodul. Wenn es verfügbar ist, können Sie durch Laden des snd-pcm-ossModuls die PCM-Geräte für OSS verwenden, z /dev/dsp.

Oder bleiben Sie einfach beim Weiterleiten von Daten an aplayoder paplaystattdessen.

Ignacio Vazquez-Abrams
quelle
2
sudo modprobe snd-pcm-ossfunktioniert auf meinem Ubuntu, um dieses Modul zu laden. Ich bekomme ein /dev/dsp1und ein /dev/dsp2raus.
Veda
9

Wenn ich das mit sudo starte, wird mir die Erlaubnis trotzdem verweigert.

Nach dieser Aussage klingt es, als würden Sie einen Befehl wie den folgenden versuchen:

sudo cat file.wav > /dev/dsp

Der Grund dafür, dass Ihnen weiterhin die Berechtigung verweigert wird, besteht darin, dass Ihre Shell zuerst versucht, das /dev/dspGerät für die Ausgabe zu öffnen , bevor Sie den Befehl ausführen (welcher ist sudo). Damit die Shell die Umleitung mit Root-Rechten öffnet, müssten Sie Folgendes tun:

sudo sh -c 'cat file.wav > /dev/dsp'
Greg Hewgill
quelle
6

Wie bereits erwähnt, veraltetes Buch.
Damit die Beispiele mit modernerem Linux funktionieren, steht dort so etwas wie

cat music.wav > /dev/dsp

ändere es in:

cat music.wav | aplay

Und Sie haben gerade Ihre erste Code-Portierung durchgeführt! Sieg! Fühlen Sie sich frei, um die Buchautor Patches zu senden. :-)

Hal
quelle