2016-10-19 7 views

Antwort

11

Die Docker-für-Mac-VM verfügt über kein Sound Passthrough-Gerät. Sie können also nichts aus diesem Blickwinkel heraus nutzen. Im Gegensatz dazu kann eine virtualbox- oder vmware-Fusion-VM Passthrough-Audio ausführen.

konnte ich Pulseaudio installiert und arbeitet auf OSX mit dem folgenden Befehl zu erhalten:

brew install pulseaudio 

Ich konnte dies mit dem folgenden gearbeitet, um zu überprüfen, zu hören Sound kam aus den Lautsprechern:

paplay cockatiel.wav 

Mein nächster Schritt ist, ein Bild zu finden, das eine Kopie von paplay hat. Ich fand , die ein Pulseaudio Server sein soll, aber ich sollte in der Lage sein, es als Client auch zu verwenden.

Ich fand die folgende Anleitung auf dem Archlinux Wiki Diskussion Pulseaudio Netzwerk Sound einrichten: https://wiki.archlinux.org/index.php/PulseAudio/Examples#PulseAudio_over_network

Ich konnte es zu dieser Situation anzupassen, indem die folgenden tun. Ich bearbeitete /usr/local/Cellar/pulseaudio/9.0/etc/pulse/default.pa auf meinem Mac und unkommentiert die folgenden zwei Zeilen:

load-module module-esound-protocol-tcp 
load-module module-native-protocol-tcp 

ich paplay cockatiel.wav auf meinem Mac reran meiner Änderungen noch gearbeitet sicher. Der Pulseaudio-Daemon scheint auf Nachfrage zu starten und gibt seine Beschwerden zurück an paplay, um auf meinem Bildschirm gedruckt zu werden, wenn ich einen Tippfehler machte. Ich habe immer noch Sound mit diesen Änderungen an default.pa, so bin ich zufrieden, dass meine Änderungen nichts gebrochen haben.

Als nächstes lief ich den Pulseaudio-Client in einem Behälter wie folgt aus:

docker run --rm -v $HOME:$HOME -w $HOME -it \ 
    -e PULSE_SERVER=192.168.10.23 \ 
    -e HOME=$HOME --entrypoint paplay \ 
    jess/pulseaudio $HOME/cockatiel.wav 

Was dies als ein Volumen eines Behälters mit meinem lokalen Home-Verzeichnis ausgeführt wird ist. Dies dient zwei Zwecken. Der erste ist die Tatsache, dass mein cockatiel.wav sich innerhalb $HOME befindet. Der zweite Grund ist, dass sowohl der Client als auch der Server eine Kopie der gleichen ~/.config/pulse/cookie Datei haben müssen (gemäß dem archlinux Wiki Guide).

Die Umgebungsvariable PULSE_SERVER ist die IP-Adresse en0 meines OSX-Hosts, daher weiß pavlay, woran er sich anschließen soll.

Die Umgebungsvariable HOME ist erforderlich, damit pavla dieselbe ~/.config/pulse/cookie Datei finden kann.

Ich konnte Sound aus einem Container auf meinem Docker-for-Mac über Pulseaudio wiedergeben.

Solange die Datei ~/.config/pulse/cookie an der richtigen Stelle angezeigt wird, sollten Sie in der Lage sein, Ton wiederzugeben. Sie müssen nicht ein Host-Volume verwenden, um dies zu erreichen - Sie könnten auch ein "Docker CP" oder sogar COPY in ein Bild tun.

+2

Ich bekomme den folgenden Fehler beim Ausführen von pavla piano2.wav $ papla piano2.wav W: [] caps.c: Normalerweise werden jetzt alle zusätzlichen Funktionen gelöscht, aber das ist unmöglich, weil PulseAudio ohne Unterstützung von Funktionen gebaut wurde. Verbindungsfehler: Verbindung verweigert pa_context_connect() fehlgeschlagen: Verbindung verweigert –

+0

@valentin_nasta haben Sie das Problem mit der Installation von PulseAudio auf dem Mac behoben? –

+1

Mit dem aktuellen PulseAudio 10.0 scheint die Ausführung von "pulseaudio --daemonize = false -v" nicht zu starten, erhalten Sie "W: [] socket-util.c: IP_TOS fehlgeschlagen: Ungültiges Argument" nach dem Hinzufügen der beiden Modul-esound- Protokoll-tcp/ Modul-native-Protokoll-TCP-Zeilen. – jamshid

Verwandte Themen