Я знаю, что это возможно, используя импульсный звук в хост-системе Linux. Но paprefs
построен для Linux, а не для Mac.Как вывести звук из контейнера Docker на Mac?
ответ
У Docker-for-Mac VM нет никакого звукового транзитного устройства, поэтому вы не можете воспользоваться этим углом. Напротив, виртуальная виртуальная машина или виртуальная виртуальная машина vmware имеют возможность делать сквозной звук.
Я был в состоянии получить PulseAudio установлен и работает на OSX с помощью следующей команды:
brew install pulseaudio
Я был в состоянии проверить, что это работает, выполнив следующие действия, услышав звук выходят из моих колонок:
paplay cockatiel.wav
Следующий шаг - найти изображение, которое имеет копию paplay
. Я нашел jess/pulseaudio, который, как представляется, предназначен для сервера pulsudio , но я должен использовать его как клиента .
я нашел следующее руководство на ArchLinux Wiki обсуждает настройку PulseAudio сети звука: https://wiki.archlinux.org/index.php/PulseAudio/Examples#PulseAudio_over_network
я смог адаптировать его к этой ситуации, выполнив следующие действия. Я редактировал /usr/local/Cellar/pulseaudio/9.0/etc/pulse/default.pa
на мой макинтош, и раскомментировать следующие две строки:
load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp
Я перезапустил 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).
PULSE_SERVER
переменная окружения - это IP-адрес en0 моего хоста OSX, поэтому папл знает, с чем подключиться.
Необходима переменная окружения HOME
, поэтому папский может найти тот же файл ~/.config/pulse/cookie
.
Я смог воспроизвести звук из контейнера, работающего на моем докере-для-mac через pulseaudio.
До тех пор, пока вы получите файл ~/.config/pulse/cookie
, чтобы он отображался в нужном месте, вы должны иметь возможность воспроизводить звук. Вам не нужно использовать том хоста для выполнения этого - вы также можете сделать «docker cp», или даже COPY
, в изображение.
Я получаю следующее сообщение об ошибке при запуске paplay piano2.wav $ paplay piano2.wav W: [] caps.c: Обычно все дополнительные возможности теперь будут отброшены, но это невозможно, потому что PulseAudio был построен без поддержки функций. Ошибка подключения: соединение отклонено pa_context_connect() не удалось: соединение было отклонено –
@valentin_nasta удалось ли устранить проблему с установкой PulseAudio на Mac? –
С текущим PulseAudio 10.0 запуск «pulseaudio --daemonize = false -v», похоже, не запускается, получите «W: [] socket-util.c: Ошибка IP_TOS: недопустимый аргумент» после добавления двух модулей - protocol-tcp/ -module-native-protocol-tcp. – jamshid