2016-12-11 3 views
7

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

При попытке воспроизвести файл WAV в моем Docker контейнере

[email protected]:/# 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 

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

До сих пор я

  1. Я установил ALSA-утилиту и большинство зависимостей ALSA в моем Docker контейнера.
  2. Добавлен --group-add audio во время работы контейнера, указав docker run --group-add audio -t -i self/debian /bin/bash

Я не уверен, если это вообще возможно с грузчиком (я не совсем уверен в том, как аппаратных ресурсах, такие как звуковые карты являются общими с контейнерами) , Я использую контейнер debian на хосте Mac OS Yosemite.

+0

Может ли http://stackoverflow.com/q/40136606/6309 помочь? – VonC

ответ

8

Это, безусловно, возможно, вам нужно смонтировать/Dev/SND, посмотреть, как Джесс Frazelle запускает контейнер 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

или для хрома, в конце

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

Смежные вопросы