Tja, wer kennt das Problem nicht? Man sitzt mit seinem tollen Subnotebook auf dem Sofa, aber die Möhre hat nur einen Mono Quäker unter(!) der Tastatur eingebaut. So wird das natürlich nichts mit den Youtube Musikvideos oder den neuesten Demo-MP3s.
Wenn man dann auch noch einen 24/7 Linux Server samt 5.1 Anlage im Wohnzimmer stehen hat, dann stellt sich die Frage: Kann ich den Sound von meiner Windows Kiste nicht irgendwie per Netzwerk (Kabel o. WLAN) zum Server schicken und über meine Anlage anhören?
Einige Leute empfehlen hier ja Pulseaudio, aber davon halte ich ehrlich gesagt wenig. Ist ja auch nicht sonderlich Ressourcen schonend. Also was denn dann?
Zunächst sollte der Linux Server so weit eingerichtet sein, dass man mit aplay ein paar Testsounds ausgeben kann:
server:~ # aplay /usr/share/sounds/alsa/Front_Right.wav
Playing WAVE ‚/usr/share/sounds/alsa/Front_Right.wav‘ : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
Sofern Ihr jetzt „Right“ aus den Lautsprechern hört, ist der Sound soweit eingerichtet und es kann losgehen.
Das tolle ist, aplay kann die Sounddaten nicht nur von einer Datei lesen, sondern auch von ’stdin‘:
server:~ # cat /usr/share/sounds/alsa/Front_Right.wav|aplay –
Playing WAVE ’stdin‘ : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
Dies sollte wieder ein „Right“ ausgeben.
Koppelt man dies jetzt mit netcat, dann ist die Hälfte schon geschafft:
server:~ # netcat -l -p 12345|aplay – -f cd
Netcat hört jetzt auf Port 12345 auf Verbindungen und piped die eingehenden Daten an aplay. Letzterem sagt man noch, dass man als Format (-f cd) 16Bit Stereo bei 44.1kHz spielen will.
Der springende Punkt ist jetzt, wie man den Sound von Windows übers Netz schiebt. Dazu braucht man natürlich zunächst mal Netcat für Windows (http://www.netzwelt.de/download/6848-netcat.html). Dann muss man noch die Lautsprecherausgabe auf stdout umleiten. Leider ist mir bisher nur das Programm „LiveInCode“ (http://liveincode.rm.pp.ru/) als nutzbare Lösung bekannt. Und dies auch nur für Aufnahme Quellen.
Im Klartext bedeutet das, eure Windowskiste muss einen entsprechenden Mixerkanal haben, hier „Stereomix“ genannt:
Also. LiveInCode runterladen, entpacken. Netcat für Windows runterladen, am besten in das selbe Verzeichnis schieben.
Gestartet wird dann mit:
<pfad zu linco>\linco.exe -B 16 -C 2 -R 44100 |<pfad zu nc.exe>\nc.exe <hostname oder ip vom server> <port>
Linco codiert 16Bit (-B 16), 2 Kanäle (-C 2) bei 44100Hz (-R 44100). Also CD Format. Der Port für Netcat wäre in unserem Beispiel dann 12345.
Gestartet sieht das dann z.B. so aus:
C:\Dokumente und Einstellungen\User\Desktop>d:\linco\linco -B 16 -C 2 -R 44100 | d:\linco\nc server 12345
****
**** LineInCode v2.10(2003-12-31)
**** (C) 2003 Roman Mamedov
****
**** Using „SoundMAX HD Audio“
**** 44100 Hz, 16 Bit, Stereo
****
**** Press Ctrl-C to stop recording…
Wenn der Connect klappt, sollte Linux bzw. aplay melden, dass es einen entsprechenden Stream empfängt:
server:~ # netcat -l -p 12345|aplay – -f cd
Playing raw data ’stdin‘ : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Spielt man nun einen Sound auf der Windows Maschine ab, sollte es aus den Lautsprechern der Anlage kommen. Einziger Nachteil: Durch Linco kommt es zu einem Delay in der Ausgabe. Wer sich also Videos ansieht, wird den Versatz deutlich bemerken. Leider ist mir kein Programm bekannt, dass den Windows Speaker direkt auf stdout umleitet. Dann könnte man das Delay minimieren.