Audio über SSH

cpukiller

cpukiller

SET SHIT ON FIRE
Wie im Titel hoffentlich erkennbar ist, will ich Audio Signale über SSH von einem PC auf einen anderen streamen. Konkret geht es dabei um die Audio Signale von Programmen die vorher per "ssh -X" aufgerufen wurden.

Während es problemlos möglich war eine mp3 Datei über SSH wiederzugeben:
Code:
ssh ich@pc01 cat /pfad/zur.mp3 | mplayer -

War ein:
Code:
cat /dev/audio | ssh ich@pc02 "cat - > /dev/audio"
...erfolglos.
Es gibt keine Ausgabe im Terminal, was normal sein sollte, aber leider auch keinen Ton, nur das Audio Device auf PC02 scheint gesperrt zu sein solange der oben genannte Befehl aktiv ist.
Der Versuch eine Audio Datei auf PC02 abzuspielen wird mit einem:
Code:
Feb 26 19:25:25 BLUBLUB pulseaudio[5745]: module-alsa-sink.c: Error opening PCM device front:0: Device or resource busy
in "/var/log/syslog" quittiert.

Ich frage mich nun ob "/dev/audio" überhaupt der richtige Ansatzpunkt ist, da eine Eingabe von "cat /dev/audio", egal ob Musik an ist oder nicht, immer die gleiche Anzahl an Fragezeichen auf dem Terminal produziert.
Außerdem scheinen noch andere Devices zu existieren, die nach Audio aussehen.
Code:
[blub@blub dev]$ ls | grep audio 
audio
audio1
[blub@blub dev]$ ls | grep sound
sound
[blub@blubsound]$ ls
admmidi  amidi  audio1  dsp   midi      midiC0D1  mixer1     sequencer2
adsp     audio  dmmidi  dsp1  midiC0D0  mixer     sequencer

Es könnte natürlich auch sein das man per "cat einfach nicht in "/dev/audio" schreiben kann oder der Befehl, den ich nach einer Google-Suche dieser Seite entnahm ist schlicht falsch.
 
Ich nehme an, dass die Daten, die in /dev/audio landen, am Lautsprecher wieder rauskommen. Deswegen bringt es nichts, mit 'cat /dev/audio' den Inhalt dieses Geraetes abzufangen.
Mit Deinem ssh-Befehl hast Du ja keinen Ton uebertragen. Sondern den Inhalt einer Datei, die dann vom lokalen mplayer interpretiert wurden. D.h., der 'mplayer'-Befehl hinter der Pipe wurde vermutlich auf dem lokalen Rechner ausgefuehrt, nicht auf dem entfernten.

Allerdings kann ich auch nicht sagen, ob es einen universellen Weg gibt, das Signal, welches an /dev/audio gesendet wird, abzufangen und an den lokalen Rechner weiterzugeben.
 
Über /dev/audio, das Control-Interface der Soundkarte, wirst du keinen Sound bekommen. Da solltest du eher das Mixer-Device nehmen (zumeist mixer, dsp, adsp o.ä.). Ich wage aber zu bezweifeln, dass sich das über SSH streamen lässt. Wenn das remote gestartete Programm streamfähig ist, könntest du einen Tunnel zwischen Applikation und einem SSH-Client legen, aber sonst wirst du mit SSH vermutlich kaum einen Audio- oder Video-Stream übertragen können. Heisst ja nicht umsonst 'Secure Shell' und nicht 'Secure Stream'. Ein 'cat' auf ein Audio- und/oder Mixer-Device wird dir jedenfalls nie ein von Player-Programmen verwertbaren Stream ausgeben. Dafür wirst du erstmal einen FIFO auf das Device aufsetzen müssen, damit ein sauberer Stream bei rauskommt. Dann kann das Programm aus dem FIFO lesen. So wird es von (fast) allen Audio-Recordern gehandhabt.

Happy Coding.
 
Zuletzt bearbeitet:
Hi,
nutzt doch mocp als streamer und client.
Gruß, Georg
 
Über /dev/audio, das Control-Interface der Soundkarte, wirst du keinen Sound bekommen. Da solltest du eher das Mixer-Device nehmen (zumeist mixer, dsp, adsp o.ä.). Ich wage aber zu bezweifeln, dass sich das über SSH streamen lässt. Wenn das remote gestartete Programm streamfähig ist, könntest du einen Tunnel zwischen Applikation und einem SSH-Client legen, aber sonst wirst du mit SSH vermutlich kaum einen Audio- oder Video-Stream übertragen können. Heisst ja nicht umsonst 'Secure Shell' und nicht 'Secure Stream'. Ein 'cat' auf ein Audio- und/oder Mixer-Device wird dir jedenfalls nie ein von Player-Programmen verwertbaren Stream ausgeben. Dafür wirst du erstmal einen FIFO auf das Device aufsetzen müssen, damit ein sauberer Stream bei rauskommt. Dann kann das Programm aus dem FIFO lesen. So wird es von (fast) allen Audio-Recordern gehandhabt.

Happy Coding.
Dann wird das wohl so nichts. Ich verweise aber nochmal auf die oben genannte Seite, auf der das so neben bei als funktionierend beschrieben wird, als währe es eigentlich selbstverständlich dass das geht.
Ich werde es gleich mal mit dem "mixer" als in- und output versuchen und mir das von schorsch312 vorgeschlagene Programm ansehen.
Außerdem habe ich gelesen, dass es eine Avahi Erweiterung für PulseAudio gibt, das Problem ist nur das selbiges nur auf einem der PCs läuft.

@schorsch312
Mcop scheint ein MPD ähnlicher MusikPlayer zu sein, hilft mir also nicht weiter wenn ich versuche Audio von laufenden Programmen zu übertragen.
 
Zuletzt bearbeitet:
Früher gab es mal einen "Module-Recorder". Hab den aber aus den Augen verloren. Der hat den Input direkt im Soundtreiber-Modul im Kernel mitgeschnitten. Vermutlich wurde der nicht mehr weiterentwickelt, weil man ja mit mkfifo einfach ein FIFO auf den Mixer setzen und daraus den Stream lesen kann.
 
Vor einer Weile habe ich mal irgendwas mit dem esound gehoert das man den in Netzwerk schieben kann.

Muss ich mal suchen.
 
Hab mich jetzt dafür entschieden PulseAudio einzurichten, damit sollte es möglich sein übers Netzwerk Audio-Signale zu übertragen.

Für alle die sich das auch an tuen wollen: PulseAudio on ArchLinux

[Ironie AN :devil:]Ich freue mich schon auf die Probleme die ich beim einrichten und beim benutzen von PulseAudio haben werde.[Ironie AUS :devil:]

Spaß beiseite, ich hoffe mal das es nicht so ein Debakel wird wie "damals" bei der Einführung in Fedora 8, in den neueren Fedora Versionen sowie in Ubuntu scheint es ja mittlerweile zu funktionieren.

So, ich bedanke mich für alle antworten und sehe das Problem jetzt als mehr oder weniger gelöst an.:D
 
Ich bin schon länger auf der Suche nach einer Möglichkeit um Audio von Anwendungen zu streamen.. am besten noch wenn dazu ein neues virtuelles Device erstellt wird..

Allerdings brauche ich das in (fast) jede Richtung..

Linux -> Windows
Windows -> Windows
...


Geht damit nich wa?
 
Mich wuerde das schon Interessiern, koenntest ja nochmal rueckmeldung machen wie du das gemacht hast.
 
@Akendo
One of PulseAudio's magnificent features is the possibility to stream audio from clients over TCP to the server running the PulseAudio daemon, allowing sound to be streamed through your LAN. To accomplish this, one needs to enable module-native-protocol-tcp, and copy the pulse-cookie to the clients.
^^Das ist aus dem ArchWiki Artikel den ich schon verlinkt habe.

Wenn du mehrere PCs hast, auf denen schon PulseAudio läuft, solltest du es selbst problemlos ausprobieren können.
Ich komme wahrscheinlich erst nächste Woche dazu PulseAudio unter Arch einzurichten, weil mir das auf den ersten Blick ziemlich aufwändig erscheint, wenn es soweit ist melde ich mich nochmal.

@seim
Da PulseAudio und "ssh -x" in Verbindung mit Windows wegfallen,
kommt wahrscheinlich nur RDP infrage, weil VNC kein Audio unterstützt.
Nun kenne ich aber keinen RDP-Server für Linux, danach müsste man bei Gelegenheit mal suchen.
Oder gibt es noch andere Desktop Sharing-Protokolle?

Das habeich gerade zu RDP-Server@Linux gefunden:
http://de.wikipedia.org/wiki/Xrdp
Xrdp scheint aber auch keine Audiounterstützung zu haben.
 
Zuletzt bearbeitet:

Ähnliche Themen

HDMI Soundausgabe

Mysteriöser 11.4 Absturz - Maschine läuft, SSH und vor Ort Login unmöglich

Signal an evdev senden (Plantronics Headset)

Kein Sound mehr unter lenny (ALSA problem)

Realtek ALC 880 Soundkarte funktioniert nicht.

Zurück
Oben