我知道這是可能的在Linux主機系統上使用脈衝音頻但paprefs
是爲Linux而不是mac而構建的。如何將音頻從Docker容器暴露給Mac?
回答
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',或者甚至將其放入一個圖像中。
- 1. 將Docker界面從Docker容器暴露給Docker主機
- 2. 用docker for mac暴露Docker容器中的TTY設備
- 3. Docker容器遇到了將端口暴露給Mac上的主機的問題
- 4. 似乎無法將Docker容器端口暴露給主機
- 5. 是否有可能將USB設備暴露給lxc/docker容器?
- 6. 如何將攔截器暴露給JMX?
- 7. 如何將Docker網絡暴露給主機?
- 8. Kubernetes Redis HA並將容器暴露給容器外
- 9. 從Docker容器暴露WSGI應用程序
- 10. 如何將java對象暴露給LuaJ
- 11. 如何將QVariantHash變量暴露給QtScript?
- 12. 如何將C#元組暴露給C++
- 13. 將網址暴露給webservice
- 14. 將C++類暴露給QML
- 15. 將C++ API暴露給C#
- 16. 將.NET暴露給COM
- 17. Docker暴露端口瘋狂
- 18. 暴露Docker容器應用端口到主機上使用boot2docker
- 19. 如何才能將Docker容器端口僅暴露給localhost,以便它也可以通過ssh隧道訪問?
- 20. 如何讓不同的Docker容器相互對話而不將端口暴露給全世界
- 21. 害怕暴露mac地址?
- 22. 將Redis DB泊塢窗容器暴露給NodeJS泊塢窗容器
- 23. 如何將函數從C++可執行文件暴露給LuaJIT
- 24. Docker:如何在不暴露端口的情況下連接到Postgresql容器
- 25. Docker - 將容器目錄暴露給主機目錄而不遮蓋原始內容
- 26. 如何從容器中調用docker API(Docker for Mac)
- 27. 如何從docker中的已安裝卷運行bash腳本並將該端口暴露於容器外部?
- 28. 將EF Model暴露給各種客戶
- 29. 將COM事件暴露給VBScript(ATL)
運行paplay piano2.wav時出現以下錯誤:$ paplay piano2.wav W:[] caps。c:通常現在所有額外的功能都將被丟棄,但這是不可能的,因爲PulseAudio沒有功能支持。 連接失敗:連接被拒絕 pa_context_connect()失敗:連接被拒絕 –
@valentin_nasta您是否設法解決在Mac上安裝PulseAudio的問題? –
對於當前的PulseAudio 10.0,運行「pulseaudio --daemonize = false -v」似乎沒有啓動,在添加兩個module-esound-v後,得到「W:[] socket-util.c:IP_TOS失敗:無效參數」 protocol-tcp/ module-native-protocol-tcp線路。 – jamshid