Воспроизведение звука одновременно через докер-контейнер и хост в альпийском изображении - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь воспроизвести звук из своего контейнера на моем хосте, в то время как мой хост воспроизводит звук.

Этот Dockerfile работает:

# Dockerfile
FROM ubuntu:bionic

RUN apt-get update && apt-get install --no-install-recommends -y \
    sox 
    pulseaudio
    && rm -rf /var/lib/apt/lists/*

# play sound
ENTRYPOINT play -nq -t alsa synth 5 sine 200

Однако, меня вдохновляет сохранить мой образменьше, я использовал альпийский вариант в качестве основного изображения для моего Dockerfile:

# Dockerfile
FROM alpine:latest

RUN apk update && apk add --no-cache \
    sox \
    pulseaudio

ENTRYPOINT play -nq -t alsa synth 5 sine 200

Я воспроизведу аудио на моем хост-компьютере, прежде чем я запусту оба образа докера, используя следующий скрипт:

# create pulseaudio socket
pactl load-module module-native-protocol-unix socket=/tmp/pulseaudio.socket

# create config for pulseaudio clients
echo "default-server = unix:/tmp/pulseaudio.socket
# Prevent a server running in container
autospawn = no
daemon-binary = /bin/true
# Prevent the use of shared memory
enable-shm = false
" >/tmp/pulseaudio.client.conf

docker run -it \
        --rm \
        --name sound \
        --env PULSE_SERVER=unix:/tmp/pulseaudio.socket \
        --env PULSE_COOKIE=/tmp/pulseaudio.cookie \
        --volume /tmp/pulseaudio.socket:/tmp/pulseaudio.socket \
        --volume /tmp/pulseaudio.client.conf:/etc/pulse/client.conf \
        --user $(id -u):$(id -g) \
        play_sound

Базовый образ Ubuntu работает должным образом, но для альпийского варианта, у меня есть следующая ошибка:

ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2564:(snd_pcm_open_noupdate) Unknown PCM default
play FAIL formats: can't open output file `default': snd_pcm_open error: No such file or directory

Кто-нибудь знает, какие пакеты мне не хватает?

...