我正在运行一个带有 python 代码的 docker 容器,该容器使用主机 MacBook Pro 内置麦克风录制几秒钟的声音。
我面临的部分挑战是确定如何在 Docker 容器内提供访问/共享 Macbook Pro 麦克风。大多数关于堆栈溢出或其他地方的现有问题都为基于 Linux 的发行版提供了解决方案,但我没有太多运气在 mac 操作系统上做同样的事情。
操作系统版本详细信息:
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)
这是泊坞窗文件:
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