Я использую докер-контейнер с кодом Python, который записывает звук в течение нескольких секунд, используя встроенный в MacBook Pro встроенный микрофон.
Часть моей задачи - определить, как обеспечить доступ к микрофону Macbook Pro внутри контейнера Docker и совместно использовать его.Большинство существующих вопросов о переполнении стека или где-либо еще предоставляют решения для дистрибутивов на основе Linux, но мне не очень повезло сделать то же самое с Mac OS.
Сведения о версии ОС:
System Version: macOS 10.14.2 (18C54)
Kernel Version: Darwin 18.2.0
Docker:
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:39 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:06 2019
OS/Arch: linux/amd64
Experimental: false
Код Python прост и работает, как и ожидалось, на хосте.
import sounddevice as sd
import numpy as np
fs = 48000
duration=5
rec = sd.rec(int(duration * fs), samplerate=fs, channels=1, blocking=True)
print(rec)
Вот файл Docker:
FROM python:3
RUN apt-get -y update
RUN apt-get -y install libasound-dev
RUN apt-get -y install portaudio19-dev
WORKDIR /usr/src/app
COPY requirements.txt ./
COPY AudioRecordingTest.py ./
RUN pip install -r requirements.txt
CMD [ "python", "./AudioRecordingTest.py" ]
docker build -t audiorecording:1.0 .
docker run -it --rm --device --privileged=true DONT_KNOW_ABOUT_THIS_PART:/dev/snd audiorecording:1.0
В идеале должен иметь возможность монтировать / использовать микрофон, как вы это делаете, когда Linux является хостом.Если нет, каковы другие возможные решения?
docker run -it --rm --device --privileged=true DONT_KNOW_ABOUT_THIS_PART:/dev/snd audiorecording:1.0