【问题标题】:Record local audio in a docker container在 docker 容器中录制本地音频
【发布时间】:2015-02-22 14:31:19
【问题描述】:

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

【问题讨论】:

    标签: ffmpeg docker alsa pulseaudio


    【解决方案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 似乎很好地详细介绍了如何使用环回设备录制内容。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 主机是VPS所以也没有声卡。我有兴趣使用类似于使用虚拟帧缓冲区的虚拟声卡录制音频。
      • 嗯,这改变了事情。不知道虚拟声卡,但我仍然怀疑这是一个权限问题。
      • 这可能对stackoverflow.com/questions/21688115/… 有所帮助,但看起来你在 Docker 中可能很难做到这一点。如果你成功了,这将是一个很好的博客。
      • 我正在手动运行 pulseaudio:"pulseaudio --log-level=debug &" 添加环回:"pactl load-module module-null-sink sink_name=mix pactl load-module module- loopback sink=mix”和录制:“avconv -f pulse -i default /opt/recording /record.wav”。它确实记录了一些东西,但声音坏了。
      猜你喜欢
      • 1970-01-01
      • 2021-01-10
      • 2013-04-23
      • 2016-09-26
      • 2014-09-09
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多