在docker容器中记录本地音频

时间:2014-12-24 13:11:13

标签: ffmpeg docker alsa pulseaudio

如何使用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

2 个答案:

答案 0 :(得分:1)

您在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&

我只需要检测播放声音的时间,但是this guide似乎对如何使用环回设备录制内容进行了详细的详细介绍。

答案 1 :(得分:0)

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

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