4

如何使用 ffmpeg 在 docker 容器中录制 Firefox 等应用程序的音频?我找到了如何将 pulseaudio 转发到主机的示例 - netflixskype

当我尝试使用 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
4

2 回答 2

2

您不需要 docker 容器中的声卡 - 脉冲音频将为您创建一个空接收器/源,如果您愿意,您也可以添加一个环回设备。

然而!如果我使用需要 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&

我只需要检测播放声音的时间,但本指南似乎很好地详细介绍了如何使用环回设备录制内容。

于 2015-07-17T00:37:13.923 回答
0

默认情况下,您无权访问容器内的声卡。如果您将--privileged标志传递给 docker run,它应该可以工作。请注意,这将赋予容器对主机的完全权限,您可能希望将其限制为一组功能。

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

于 2014-12-24T14:44:22.257 回答