AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 785106
Accepted
Jean
Jean
Asked: 2024-10-15 12:35:07 +0800 CST2024-10-15 12:35:07 +0800 CST 2024-10-15 12:35:07 +0800 CST

Pipewire 组合流未输出到从属设备

  • 772

我的 Debian 测试正在运行 pipewire 和 pipewire-pulse,以使用组合接收器模块将音频输出到耳机和扬声器。这已经运行了很长时间,但昨天突然停止工作(在向组合接收器播放音频时,耳机和扬声器均不输出任何音频)。

Apt 日志显示 pipewire 十天前已更新至 1.2.5-1,此后机器已重新启动,并且仍按预期运行,因此这看起来不像是对 pipewire 或 pipewire-pulse 的更新。我不知道可能发生了什么变化:机器在工作和非工作状态之间没有重新启动,并且在停止工作后重新启动也没有帮助。我在日志中找不到那段时间 pipewire 或 pulse 发生任何事情的痕迹,也找不到任何可能出错的线索。

我已将问题缩小到组合接收器模块未以以下方式输出到从属设备:

  • 如果我将播放音频的应用程序移至耳机接收器,音频就会在那里播放
  • 如果我将播放音频的应用程序移到扬声器接收器,音频就会在那里播放
  • 如果我将播放音频的应用移至组合接收器,则两个设备上均不会播放音频。但是 pavucontrol 显示组合接收器有活动,而两个物理设备上均无活动。

以下是 pavucontrol 在向组合接收器播放音频时对我的设置的看法: pavucontrol 截图 在此屏幕截图中,组合接收器称为All、耳机Casque和扬声器Enceintes。观察如何有活动正在播放,All但其他任何输出都没有。

以下是 Helvum 对我的设置的看法(将输入设备等不相关的东西移到了屏幕截图的左侧): helvum 截图

在我看来,Helvum 的输出就像接收器应该在和All上播放音频。CasqueEnceintes

以下是与组合接收器关联的 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),但所有尝试都导致相同的状态,即组合接收器显然正在播放音频,但物理设备(或任何相关接收器)都没有播放。

我不知道还能做什么来调查问题所在。我该如何进一步调查?

pipewire
  • 1 1 个回答
  • 42 Views

1 个回答

  • Voted
  1. Best Answer
    Jean
    2024-12-05T02:07:43+08:002024-12-05T02:07:43+08:00

    好吧,经过 6 周的烦恼,甚至编译了我自己的 pipewire 来添加一些调试打印后,一切突然开始再次工作,一开始没有任何我能理解的原因。

    没有声音的原因是组合接收器实际上为其每个输出创建了一个虚拟流(在 Halvum 屏幕截图中可以看到名为“所有输出”的虚拟流,但我无法知道它是一个流,并且没有任何应用或小部件会显示该流),结果发现这些流的音量设置为零。我不知道音量是如何设置为 0 的,但可以肯定的是,再次调高音量可以解决问题,我可以通过再次调低音量来重现这个问题。

    我注意到的原因是错误地安装了kmix。 我一直在使用 KDE,我认为等离子音量小部件kmix就像几年前一样(多年来情况并非如此,但我已经忘记了这一点),运行旧应用程序kmix显示由组合接收器创建的流有两个“未知流”,大概是因为 kmix 太旧而无法了解虚拟流。 当它再次开始工作时,我记得我已经调高了这些流的音量,重新安装了 kmix 并进行了测试,并了解了发生了什么。 在我知道要搜索什么之后,我注意到 也pavucontrol允许您设置这些流的音量,只要您知道,在“播放”选项卡中,您应该使用右下角的组合框选择“虚拟流”以显示它们。

    一旦你了解了它的工作原理,它实际上就完全说得通了。只是如果你不知道,你就无法猜测它。

    • 0

相关问题

  • PipeWire 中用于音频设备/声卡的“Pro Audio”配置文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve