Closed2
メモ: Dockerコンテナで再生した音声を、MacのPulseAudioで聞く
ホスト側のMac
brew install pulseaudio
pulseaudio --version
出力
pulseaudio 17.0
PulseAudioをデーモンとして起動
pulseaudio --load=module-native-protocol-tcp --exit-idle-time=-1 --daemon
最初起動したときはフォアグラウンドで動くのかな?と思ったけど、どうやらバックグラウンドになるみたい。デーモンの起動を確認。
pulseaudio --check -v
出力
I: [] main.c: Daemon running as PID 7310
そして~/.config/pulse
内にファイルが作成されている。これがコンテナで必要になる。
ls -l ~/.config/pulse
出力
total 40
-rw-------@ 1 kun432 staff 256 3 25 01:04 cookie
-rw-------@ 1 kun432 staff 373 3 25 01:04 [ホスト名]-card-database.simple
-rw-------@ 1 kun432 staff 1 3 25 01:04 [ホスト名]-default-sink
-rw-------@ 1 kun432 staff 1 3 25 01:04 [ホスト名]-default-source
-rw-------@ 1 kun432 staff 2023 3 25 01:04 [ホスト名]-device-volumes.simple
lrwx------@ 1 kun432 staff 68 3 25 01:04 [ホスト名]-runtime -> /var/folders/XX/XXXXXXXXXXXXXXXXXXXXXXXX/X//pulse-XXXXXXXX
Ubuntuコンテナを立ち上げる。上のディレクトリをマウントする。
docker run \
--rm \
-it \
-v ~/.config/pulse:/root/.config/pulse \
ubuntu /bin/bash
以降コンテナ内の作業
pulseaudioをインストール。alsa-utilsにはスピーカーテスト用のコマンドが含まれている。
apt update
DEBIAN_FRONTEND=nointeractive apt install -y pulseaudio alsa-utils
ではサウンド再生
export PULSE_SERVER=host.docker.internal
speaker-test
音が聞こえない場合は、Mac側でPulseAudioの出力先設定を確認。
pacmd list-sinks | egrep -e '(name:|index:|card:|device.string =)'
出力
* index: 0
name: <Channel_1__Channel_2>
card: 0 <PHL_328P6VU>
device.string = "PHL 328P6VU"
index: 1
name: <Front_Left__Front_Right.2>
card: 3 <Jabra_SPEAK_510_USB>
device.string = "Jabra SPEAK 510 USB"
index: 2
name: <Channel_1__Channel_2.2>
card: 5 <BlackHole_2ch>
device.string = "BlackHole 2ch"
index: 3
name: <1__2>
card: 6 <________________________>
device.string = "外部ヘッドフォン"
(snip)
音声を出力させたいデバイスのIDに変更する。なお、この設定はMac本体で選択されている音声出力デバイスの設定とは関係なく動作するみたい。
pactl set-default-sink 1
参考
雑にやるならMac側でPulseAudioを起動する際にauth-anonymous=1
を指定しておくと、Docker側からCookieをマウントする必要がなくなる。
pulseaudio \
--load="module-native-protocol-tcp auth-anonymous=1" \
--exit-idle-time=-1 \
--daemon
もしくはこれ。127.0.0.1
になるんだね。
pulseaudio \
--load="module-native-protocol-tcp auth-ip-acl=127.0.0.1" \
--exit-idle-time=-1 \
--daemon
このスクラップは6日前にクローズされました
ログインするとコメントできます