在Docker容器中logging本地audio

如何使用ffmpeg在Docker容器中logging像Firefox这样的应用程序的audio? 我已经find了如何转发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 

docker容器中不需要声卡 – 脉冲audio会为您创build一个空的信源/源,如果您愿意,也可以添加一个环回设备。

然而! 如果我正在使用需要X的脉冲audio库,则会收到连接错误。我使用了Xvfb。 并做了这样的事情:

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

我只是需要检测什么时候播放声音,但这个指南似乎是一个很好的详细报道如何使用回送设备来logging的东西。

默认情况下,您无法访问容器内的声卡。 如果你将--privileged标志传递给--privileged run,它应该可以工作。 请注意,这将使容器在主机上具有完整的权限,您可能希望将其限制为一组function。

有关更多信息: https : //docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration