You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下使用Python调用FFmpeg录制USB耳机输出音频的问题

Ubuntu 22.04下使用Python调用FFmpeg录制USB耳机输出音频的问题

看起来你已经在终端里成功用FFmpeg捕获USB耳机的输出音频了,但在Python里执行时遇到了问题——这种情况大多和Python调用子进程的方式、环境变量或者权限有关,我来给你梳理几个可行的解决思路:

先回顾下你的场景细节:

  • 你通过pactl list short sources确认了USB耳机的监听源为alsa_output.usb-0c76_USB_PnP_Audio_Device-00.analog-stereo.monitor,终端输出如下:
    0. alsa_output.usb-0c76_USB_PnP_Audio_Device-00.analog-stereo.monitor  module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
    1. alsa_input.usb-0c76_USB_PnP_Audio_Device-00.mono-fallback  module-alsa-card.c      s16le 1ch 48000Hz       SUSPENDED 
    2. alsa_output.pci-0000_00_1f.3.iec958-stereo.monitor     module-alsa-card.c      s16le 2ch 44100Hz       SUSPENDED
    
  • 终端直接执行这条命令能成功录制10秒音频:
    ffmpeg -f pulse -i alsa_output.usb-0c76_USB_PnP_Audio_Device-00.analog-stereo.monitor -t 10 output.wav
    

一、用subprocess正确调用FFmpeg

Python里调用外部命令最稳妥的方式是用subprocess.run(),并且把命令拆分成列表形式(避免shell解析带来的参数错误),给你写个可直接用的示例代码:

import subprocess

# 将FFmpeg命令拆分为列表,每个参数单独作为一项
record_command = [
    "ffmpeg",
    "-f", "pulse",
    "-i", "alsa_output.usb-0c76_USB_PnP_Audio_Device-00.analog-stereo.monitor",
    "-t", "10",
    "output.wav"
]

try:
    # check=True会在命令返回非0状态时抛出异常,方便捕获错误
    result = subprocess.run(record_command, check=True, capture_output=True, text=True)
    print("音频录制成功!")
    print("FFmpeg输出信息:\n", result.stdout)
except subprocess.CalledProcessError as e:
    # 打印标准错误输出,这是排查问题的核心依据
    print("录制失败,错误详情:\n", e.stderr)

二、排查环境变量差异

终端能执行但Python脚本不行,有时候是因为环境变量不同——比如Python的运行环境找不到FFmpeg的路径。你可以先在终端里用which ffmpeg获取FFmpeg的绝对路径,然后替换到代码里:

# 终端执行该命令,获取FFmpeg绝对路径
which ffmpeg
# 输出示例:/usr/bin/ffmpeg

把代码里的"ffmpeg"替换成上述绝对路径即可。

三、检查PulseAudio权限

如果还是失败,可能是运行Python脚本的用户没有访问音频设备的权限,你可以将用户加入audio组:

sudo usermod -aG audio $USER

执行完成后注销再重新登录,权限即可生效。

四、激活音频监听设备

如果设备处于SUSPENDED状态,你可以在运行脚本前先激活它:

pactl set-source-port alsa_output.usb-0c76_USB_PnP_Audio_Device-00.analog-stereo.monitor analog-stereo

如果问题依然存在,记得把subprocess捕获到的stderr内容贴出来,这能帮你快速定位具体问题~

备注:内容来源于stack exchange,提问作者Dinh Chu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 10:23:19