使用ffmpeg将脉冲音频记录为CAP_SYS_ADMIN

时间:2018-06-24 07:51:11

标签: ffmpeg sudo pulseaudio

作为我的普通用户,这有效:

ffmpeg -f pulse -i default -acodec aac foo.aac

但使用sudo运行会失败并显示以下信息:

default: No such process

由于我热衷于使用kmsgrab option并且仍然可以访问声音以进行录音,因此如何以特权用户(CAP_SYS_ADMIN)的身份运行ffmpeg?

1 个答案:

答案 0 :(得分:0)

连接到Pulse Audio服务器有两个步骤:

  1. 服务器路径。默认情况下,PulseAudio服务器通过在$XDG_RUNTIME_DIR下创建UNIX套接字来使其自身可被客户端访问。通过sudo运行命令将重置环境,从而使PulseAudio客户端无法找到要连接的服务器。

  2. 身份验证。默认情况下,PulseAudio服务器在~/.pulse-cookie中创建一个身份验证cookie,客户端必须在连接后中继到服务器。如果未将$HOME$PULSE_COOKIE设置为cookie的位置,则客户端将无法进行身份验证。

通过sudo运行ffmpeg的完整命令如下:

sudo env \
    PULSE_COOKIE=$HOME/.pulse-cookie \
    PULSE_SERVER=$XDG_RUNTIME_DIR/pulse/native \
    ffmpeg -y -f pulse -i default -acodec aac foo.aac 

您可以用PULSE_SERVER ffmpeg device option代替-server