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

如何在Pipewire中创建供Java TargetDataLine读取的虚拟音频源?

解决方案:用Pipewire创建镜像默认输出的虚拟音频源

直接创建镜像源的命令

无需多步操作,一条pw-loopback命令即可完成,核心是指定捕获默认输出的监听流并将其暴露为可读取的音频源:

pw-loopback --capture-props='media.class=Audio/Source node.name=output-mirror-source target.object=DEFAULT_SINK_MONITOR' --playback-props='media.class=Audio/Sink node.name=unused-loopback-sink' -m '[FL FR]'
  • target.object=DEFAULT_SINK_MONITOR:指定捕获系统默认音频输出的监听流(即扬声器正在播放的内容)
  • media.class=Audio/Source:将loopback的捕获端标记为音频源,Java的TargetDataLine可识别这个名为output-mirror-source的设备
  • --playback-props设置的sink是必要占位符,因为pw-loopback需要两端节点存在,该sink不会被实际使用

针对你之前尝试的错误纠正

  1. 未指定捕获目标:最初的命令没有告诉loopback要捕获的音频流,无法生成有效源,必须通过target.object指定默认输出的监听端。
  2. media.class参数倒置:第二个命令中--playback-props和--capture-props的media.class设置错误,应该是捕获端作为Audio/Source,播放端指向要监听的目标。
  3. pw-link端口不匹配:第三个方法中连接的端口名称错误,正确的声道级连接命令应为:
    pw-link cliradio-sink:monitor_FL cliradio-source:playback_FL
    pw-link cliradio-sink:monitor_FR cliradio-source:playback_FR
    
    不过这种多节点方式冗余,不如直接使用第一条命令高效。

验证创建结果

执行命令后,可通过以下命令确认虚拟源是否存在:

pw-cli list-objects | grep output-mirror-source

Java程序中选择output-mirror-source作为音频源,即可读取系统内部播放的音频。

内容的提问来源于stack exchange,提问作者shinysocks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:40:26