运行 docker 容器内的 pulseaudio 用于录制系统音频

Running pulseaudio inside docker container to record system audio

我正在尝试使用 Selenium 设置一个 Docker 容器,该容器使用 ffmpeg 记录带有系统音频的浏览器。我有使用 Xvfb 的视频。不幸的是,在音频方面,它似乎更棘手。

我想我会在容器内设置一个虚拟 pulseaudio 接收器,这样我就可以录制它的监视器:

pacmd load-module module-null-sink sink_name=loopback
pacmd set-default-sink loopback
ffmpeg -f pulse -i loopback.monitor test.wav

这适用于我的主机操作系统,但是当尝试在容器中启动 pulseaudio 守护程序时,失败并显示以下消息:

E: [pulseaudio] module-console-kit.c: Unable to contact D-Bus system bus: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory

这似乎与名为 dbus 的自由桌面服务有关。我试过安装它并启动它的守护进程,但我似乎无法让它正常工作。 我找不到太多关于如何从这里开始的信息。 pulseaudio 我缺少什么?也许有更简单的方法在容器内录制系统音频?

我的目标不是从主机操作系统录制它,而是在浏览器中播放音频并将其全部录制在同一个容器中。

here 的以下解决方案帮助了我。

运行 在启动 PulseAudio 之前以 root 身份执行以下命令:

mkdir -p /var/run/dbus
dbus-uuidgen > /var/lib/dbus/machine-id
dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address