我的 Debian 测试正在运行 pipewire 和 pipewire-pulse,以使用组合接收器模块将音频输出到耳机和扬声器。这已经运行了很长时间,但昨天突然停止工作(在向组合接收器播放音频时,耳机和扬声器均不输出任何音频)。
Apt 日志显示 pipewire 十天前已更新至 1.2.5-1,此后机器已重新启动,并且仍按预期运行,因此这看起来不像是对 pipewire 或 pipewire-pulse 的更新。我不知道可能发生了什么变化:机器在工作和非工作状态之间没有重新启动,并且在停止工作后重新启动也没有帮助。我在日志中找不到那段时间 pipewire 或 pulse 发生任何事情的痕迹,也找不到任何可能出错的线索。
我已将问题缩小到组合接收器模块未以以下方式输出到从属设备:
- 如果我将播放音频的应用程序移至耳机接收器,音频就会在那里播放
- 如果我将播放音频的应用程序移到扬声器接收器,音频就会在那里播放
- 如果我将播放音频的应用移至组合接收器,则两个设备上均不会播放音频。但是 pavucontrol 显示组合接收器有活动,而两个物理设备上均无活动。
以下是 pavucontrol 在向组合接收器播放音频时对我的设置的看法:
在此屏幕截图中,组合接收器称为All
、耳机Casque
和扬声器Enceintes
。观察如何有活动正在播放,All
但其他任何输出都没有。
以下是 Helvum 对我的设置的看法(将输入设备等不相关的东西移到了屏幕截图的左侧):
在我看来,Helvum 的输出就像接收器应该在和All
上播放音频。Casque
Enceintes
以下是与组合接收器关联的 pipewire 对象的描述,由 输出pw-cli info
:
id: 30
permissions: r--m-
type: PipeWire:Interface:Module/3
name: "libpipewire-module-combine-stream"
filename: "/usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-combine-stream.so"
args: "{
combine.mode = sink
node.name = "All"
node.description = "All"
combine.latency-compensate = false
combine.props = {
audio.position = [ FL FR ]
}
stream.props = {
}
stream.rules = [
{
matches = [
{
media.class = "Audio/Sink"
node.nick = "~Enceintes|Casque"
}
]
actions = {
create-stream = {
}
}
}
]
}"
* properties:
* module.name = "libpipewire-module-combine-stream"
* object.id = "30"
* object.serial = "30"
* module.author = "Wim Taymans <[email protected]>"
* module.description = "Combine multiple streams into a single stream"
* module.usage = "( node.latency=<latency as fraction> ) ( combine.mode=<mode of stream, playback|capture|sink|source>, default:sink ) ( node.name=<name of the stream> ) ( node.description=<description of the stream> ) ( audio.channels=<number of channels, default:2> ) ( audio.position=<channel map, default:[ FL FR ]> ) ( combine.props=<properties> ) ( stream.props=<properties> ) ( stream.rules=<properties> ) "
* module.version = "1.2.5"
我尝试过重新启动 pipewire,删除创建组合接收器的设置并手动添加它(使用pw-cli
和pactl
),但所有尝试都导致相同的状态,即组合接收器显然正在播放音频,但物理设备(或任何相关接收器)都没有播放。
我不知道还能做什么来调查问题所在。我该如何进一步调查?