2014-12-24 2 views
3

Как записать звук приложения, например Firefox внутри контейнера докеров, с помощью ffmpeg? Я нашел примеры, как переслать pulseaudio на хост - netflix, skype.Запись локального звука в контейнере докера

Когда я пытаюсь использовать pactl:

pactl list sources 

Или

docker exec -it <container-id> bash 
apt-get install pulseaudio 
pactl load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/.pulse-socket 

я получаю сообщение об ошибке:

Connection failure: Connection refused 
pa_context_connect() failed: Connection refused 

Это также не

ffmpeg -f pulse -i default /tmp/pulse.wav 

ответ

0

По умолчанию у вас нет доступа к звуковой карте внутри контейнера. Если вы передадите флаг --privileged на запуск докеров, он должен работать. Обратите внимание, что это предоставит контейнеру полные привилегии на хосте, вы можете ограничить это набором возможностей.

Для получения дополнительной информации: https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration

+0

Хост - это VPS, поэтому он не имеет звуковой карты. Я заинтересован в записи звука с помощью виртуальной звуковой карты, аналогичной использованию виртуального буфера кадров. – pablo

+0

Хорошо, что меняет вещи. Не знаю о виртуальных звуковых картах, но я все еще подозреваю, что это проблема с привилегиями. –

+0

Это может помочь http://stackoverflow.com/questions/21688115/pactl-called-from-systemd-service-always-reports-pa-context-connect-failed-co, но похоже, что вы можете сделать это в Докер. Если вы добьетесь успеха, это сделает хороший блог. –

1

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

Однако! У меня возникли ошибки соединения, если я использую библиотеку импульсных аудио, для которой требуется X. Я использовал Xvfb. И сделал что-то вроде этого:

Xvfb :0 -screen 0 1600x1200x24+32 -ac -fbdir /shared_volume& 
pulseaudio --start --disallow-exit -vvv --log-target=newfile:"$LOG_DIR/pulseaudio.log" --daemonize& 

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

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