2016-10-19 66 views

回答

11

Docker for Mac虛擬機沒有任何聲音直通設備,所以沒有任何可以從這個角度利用的東西。相比之下,virtualbox或vmware融合虛擬機確實有能力進行直通音頻。

我能得到的PulseAudio安裝和OSX工作用下面的命令:

brew install pulseaudio 

我能夠驗證運行下面的這個工作,聽到聲音出來我的發言的:

paplay cockatiel.wav 

我的下一步是找到具有paplay副本的圖像。我發現jess/pulseaudio,這似乎是一個pulseaudio 服務器,但我應該能夠使用它作爲客戶端以及。

我發現了維基的Archlinux以下指南討論建立網絡的PulseAudio聲音:https://wiki.archlinux.org/index.php/PulseAudio/Examples#PulseAudio_over_network

我能夠通過執行以下操作,以使其適應這種情況。我在我的Mac編輯​​,並註釋掉以下兩行:

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

我在我的Mac重新運行paplay cockatiel.wav,以確保我的變化仍然工作。 pulseaudio守護進程似乎是按需啓動的,並且如果我輸入了錯字,它會將其投訴回傳給paplay以便在我的屏幕上打印。我對default.pa所做的更改仍然有聲音,所以我很滿意我的更改沒有破壞任何內容。

接下來,我跑了客戶的PulseAudio在這樣的容器:

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 

這樣做是運行的容器與本地主目錄爲卷。這有兩個目的。首先是我的cockatiel.wav位於$HOME之內。第二是因爲客戶端和服務器都需要有一個相同的~/.config/pulse/cookie文件的副本(根據archlinux wiki指南)。

PULSE_SERVER環境變量是我的OSX主機的en0 IP地址,因此paplay知道要連接到什麼。

HOME環境變量是必要的,所以paplay可以找到相同的~/.config/pulse/cookie文件。

我能夠通過pulseaudio從運行在我的docker-for-mac上的容器播放聲音。

只要你得到~/.config/pulse/cookie文件出現在正確的位置,你應該能夠播放聲音。你不必使用主機捲來實現這一點 - 你也可以做一個'docker cp',或者甚至將其放入一個圖像中。

+2

運行paplay piano2.wav時出現以下錯誤:$ paplay piano2.wav W:[] caps。c:通常現在所有額外的功能都將被丟棄,但這是不可能的,因爲PulseAudio沒有功能支持。 連接失敗:連接被拒絕 pa_context_connect()失敗:連接被拒絕 –

+0

@valentin_nasta您是否設法解決在Mac上安裝PulseAudio的問題? –

+1

對於當前的PulseAudio 10.0,運行「pulseaudio --daemonize = false -v」似乎沒有啓動,在添加兩個module-esound-v後,得到「W:[] socket-util.c:IP_TOS失敗:無效參數」 protocol-tcp/ module-native-protocol-tcp線路。 – jamshid

相關問題