Как воспроизвести звук в контейнере docker
Я пытаюсь докеризировать текст в речевое приложение для совместного использования кода с другими разработчиками, однако проблема, с которой я сейчас сталкиваюсь, заключается в том, что контейнер docker не может найти звуковую карту на моей хост-машине.
когда я пытаюсь воспроизвести wav-файл в моем контейнере docker
root@3e9ef1e869ea:/# aplay Alesis-Fusion-Acoustic-Bass-C2.wav
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4259:(_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:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:722: audio open error: No such file or directory
Я думаю, что основная проблема заключается в том, что контейнер docker не может достичь звуковой карты на моем хосте.
пока у меня есть
- я установил alsa-utils и большинство зависимостей alsa в моей контейнер докера.
- добавил
--group-add audio
во время работы контейнер, указавdocker run --group-add audio -t -i self/debian /bin/bash
Я не уверен, что это возможно даже с docker(я не совсем уверен, как аппаратные ресурсы, такие как звуковые карты, совместно используются с контейнерами). Я использую контейнер debian на хосте Mac OS Yosemite.
1 ответов
это определенно возможно, вам нужно установить /dev / snd, посмотреть, как Джесс Фрейзелл запускает контейнер Spotify, из
https://blog.jessfraz.com/post/docker-containers-on-the-desktop/
вы заметите
docker run -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
-e DISPLAY=unix$DISPLAY \ # pass the display
--device /dev/snd \ # sound
--name spotify \
jess/spotify
или для Chrome, в конце
docker run -it \
--net host \ # may as well YOLO
--cpuset-cpus 0 \ # control the cpu
--memory 512mb \ # max memory it can use
-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
-e DISPLAY=unix$DISPLAY \ # pass the display
-v $HOME/Downloads:/root/Downloads \ # optional, but nice
-v $HOME/.config/google-chrome/:/data \ # if you want to save state
--device /dev/snd \ # so we have sound
--name chrome \
jess/chrome