LWN:PipeWire,新一代的Linux audio/video bus

深入 PipeWire 随着它的成熟,PipeWire 项目正在慢慢地变得流行。它的文档依然相对稀少,但正在逐渐增长。然而,让项目外部的人尝试用他们自己的语言来理解和解释它总是一个好主意,重申想法,从他们自己的角度来看待它。在之前的一篇文章中,我讨论了 Unix 上的通用音频栈,并有一节提到了 PipeWire。不幸的是,因为当时我没有找到足够的文档,并且无法理解一些概念,我认为我没有对项目进行公正的处理,甚至可能混淆了某些部分。 阅读详情
AI摘要

PipeWire作为Linux的新守护进程,旨在解决PulseAudio在沙盒应用中的局限性,提供低延迟音频支持,并统一消费级与专业音频处理。PipeWire采用简单插件API(SPA)确保实时线程的可靠性,并使用基于定时器的音频调度提高效率。

关注了就能看到更多这么棒的文章哦~

PipeWire: The Linux audio/video bus

March 2, 2021

This article was contributed by Ahmed S. Darwish
DeepL assisted translation
https://lwn.net/Articles/847412/

十多年来,PulseAudio 一直凭借其主流的音频混音(audio mixing)和路由守护进程(routing daemon)以及其音频 API 来服务于 Linux 桌面。遗憾的是,PulseAudio 的内部架构并不适合日益增长的沙盒应用场景(sandboxed-applications use case),尽管人们一直在努力改善。PipeWire 部分来源于这些尝试,作为一个新的 daemon(守护进程),将在即将到来的 Fedora 34 版本中取代 PulseAudio。这个改变值得介绍一下。

过去,Fedora 8 在 2007 年底切换到 PulseAudio 的过程并不顺利。Linux 的长期用户仍然记得,当时人们对这个 daemon 的印象就是会导致系统音频无法工作。在经历了那么一个坎坷的开端之后,PulseAudio 最终成为了 Linux 声音服务器(sound-server)斗争中的赢家。它提供了一个原生的客户端音频(native client audio) API,同时也能支持那些正在使用当时常见的音频 API 的应用程序–包括 raw Linux ALSA sound API,这种 API 通常只允许有一个应用程序访问声卡。PulseAudio 会将多个应用程序的音频流混合起来(mix),作为音频管理的中心节点,提供了细粒度的设置功能,支持无缝路由(seamless routing)到蓝牙、USB 或 HDMI。它对自己在 Linux Desktop 中的定位是相当于 Windows Vista 的用户模式音频引擎(user-mode audio engine)和 macOS CoreAudio daemon。

Cracks at PulseAudio

到了 2015 年,PulseAudio 事实上仍是 Linux 的缺省音频守护进程,但危机也开始产生了。逐渐转向沙盒化的桌面应用,对其原始设计来说是致命的。因为通过 PulseAudio,一个应用程序就可以窥探到其他应用程序的音频、对麦克风进行无中介的(unmediated)访问、或者加载 server modules 来干扰其他应用程序。人们试图对 PulseAudio 进行修复,也就是修改 access-control layer 和 per-client memfd-backed transport。这都是必要改动,但仍然还不足以隔离各个客户端的音频。

大约在那个时候,PulseAudio 的核心开发人员之一 David Henningson 退出了此项目。他对于 PulseAudio 守护进程对沙盒应用场景的不适应、以及它对音频路由的决策的策略以及混合音频的机制感到沮丧。在他发言的末尾,他提出,这些问题是否应该让我们承担创建一个新的、必需的 Linux audio daemon 的阵痛了:

在软件中没有什么是不可能的,但如果要对 PulseAudio 的架构设计进行大改动,从而用正确的方式来支持所有这些要求(而不是 "在上面再加一个 layer"[…])将是非常困难的,所以我的判断是,从头开始写新的东西会更容易。

而且我确实认为可以写出一些从 PulseAudio、JACK 和 AudioFlinger 中吸取了精华的东西,从而得到一个既适用于移动设备又适用于桌面设备的东西;并且适用于专业音频(pro-audio)、游戏、低功率音乐播放(low-power music playback)等。[…]我认为,作为一个开源社区,开发出这样的声音服务器会更有价值。

PulseVideo to Pinos

与此同时,GStreamer 的联合创始人 Wim Taymans 被安排开发一个 Linux service,用来协调网络浏览器对摄像设备的访问权。最初,他把这个项目称为 PulseVideo。这个名字背后的想法很简单:类似于 PulseAudio (为了协调对 ALSA 声音设备的访问),PulseVideo 则是为了协调和复用 Video4Linux2 摄像头设备节点。

不久之后,Taymans 发现了 William Manley 创建的一个名称类似的 PulseVideo 原型程序[视频],并帮助其将其中必须的 GStreamer 功能加了进来。为了避免与 PulseAudio 的名称冲突,并且由于它的功能已经扩展过,不再是针对 camera access 的了,所以 Taymans 后来将项目改名为 Pinos(来自于他在西班牙所居住的城市)

Pinos 是建立在 GStreamer pipeline 之上的,使用了早期对 Manley 的原型程序增加的一些基础设施代码。使用了 D-Bus 加上传递文件描述符来用于进程间通信。在 GStreamer 2015 会议上,Taymans 向与会者描述了 Pinos 架构,并进行了多个应用程序同时访问系统 camera 输入数据的演示。

由于其灵活的、基于 pipeline 的、文件描述符传递的架构,Pinos 还可以支持反向的应用,也就是多媒体广播:应用程序可以通过传递 memfd 或 dma-buf 文件描述符来 "upload" 多媒体流(media stream)。然后,多媒体流可以被进一步处理并分发到其他应用程序和系统多媒体 sink 设备,如 ALSA 声音设备。

虽然只是顺便提了一下,不过这个双向发送的能力,以及跨应用程序发送 stream 的能力使得 Pinos 可以作为一个通用的音频/视频总线(generic audio/video bus),用来在相互隔离的、可能是 sandbox 的用户进程之间有效地传递多媒体内容。因此,只要适当扩展一下的话,Pinos 就可能替代 PulseAudio 了。Taymans 被与会者明确地问到了这个问题[视频,31:35],他回答道:"取代 PulseAudio 不是一件容易的事,它不在目前的考虑之中[…],但[Pinos]可以有广泛用法,所以它以后可以做更多的事情"。

随着前文所讨论的 PulseAudio 的不足之处越来越多,这里说的"以后可以做更多" 就很快变成有需要的了。

PipeWire

到了 2016 年,Taymans 开始重新思考 Pinos 的基础设计,将它的目标扩展为标准的 Linux 音频/视频守护进程。这包括需要用到 "大量小 buffer" 的低延迟音频用例(low-latency audio use case),这些以前通常是由 JACK 支持的。这里就有两个主要问题需要解决了。

首先,核心守护进程(core daemon)和客户端库(client libraries)对 GStreamer 元素和流水线(elements and pipelines)的依赖性变成了一个麻烦。GStreamer 中有大量的底层逻辑来确保实现中的灵活性。处理 GStreamer pipeline 的过程,这都是在 Pinos 的实时线程的上下文中完成的,那么这些底层逻辑就可能会引入一些隐含的内存分配(implicit memory allocation)、线程创建和等待 lock 的行为。众所周知,这些都是会对硬实时代码(hard realtime code)所必须具有的可预测性而产生负面影响的。

为了在满足硬实时要求的同时,也实现 GStreamer pipeline 的部分灵活性,Taymans 创建了一个更简单的多媒体流水线框架,并将其称为 SPA——简单插件 API(Simple Plugin API)[PDF]。该框架的设计中为了确保能在实时线程(如 Pinos media processing threads)中可靠地运行,设置了一个永远不应该超过的时间预算(time budget)。SPA 不加快任何内存分配,相应的,内存分配等就变成了 SPA 框架应用程序(framework application)的唯一责任。

每个 node 都有一组定义明确的状态。其中一个状态就是用来配置这个 node 的所有 port、format 和 buffer 的,这是由 main thread(non-realtime)来完成的;还有一个状态用来供 host 分配这个 node 在完成配置之后所需的所有 buffer;另外还有一个状态,就是实际在实时线程中完成处理工作。在 streaming 的过程中,如果任何一个 media pipeline node 的状态发生了变化(比如发生了某个 event),就可以通知到实时线程(realtime threads),从而将控制权切换回 main thread 来进行重新配置(reconfiguration)。

其次,不再使用 D-Bus 作为 IPC protocol。取而代之的是一个受 Wayland 启发,通过 Unix 域套接字实现的原生完全异步协议(native fully asynchronous protocol)——但是不会使用 XML serialization。Taymans 需要的是一个简单且能保证硬实时的协议。

当集成了 SPA framework、开发了 native IPC protocol 之后,这个项目已经超出了它最初的目的,它从一个用来共享 camera access 的 D-Bus daemon 变成了一个完全实时的音频/视频总线(full realtime-capable audio/video bus)。因此,它被重新命名为 PipeWire,这个名字反映了它作为基于 pipeline 的多媒体共享和处理引擎的新地位。

Lessons learned

从一开始,PipeWire 的开发者就利用了一套来自当前音频守护进程的经验,包括了 JACK、PulseAudio 和 Chromium OS 音频服务器(CRAS)。与 PulseAudio 的有意将 Linux 音频环境分为消费级与专业实时音频不同,PipeWire 从一开始就被设计成可以同时处理两种音频。为了避免 PulseAudio sandbox 的限制,它天生就关注了安全性:每个 PipeWire node(其中包含若干个 SPA nodes)里面都有一个 per-client permission bitfield(每个客户端都有相应的 bit 来配置权限)。这种具有安全意识的设计就可以简单而安全地与 Flatpak portals 集成起来了。沙箱应用权限接口(sandboxed-application permissions interface)现在也升级成为了一个 freedesktop XDG 标准。

同 CRAS 和 PulseAudio 一样(但与 JACK 不同),PipeWire 使用了基于定时器的音频调度(time-based audio scheduling)。一个可以在运行时重新动态配置的定时器被用来安排唤醒(scheduling wake-ups)来填写 audio buffer(音频缓冲区),而不是依赖固定间隔时间的声卡中断。除了省电的好处外,这样一来 audio daemon 就可以提供动态延迟(dynamic latency)了:对于需要省电的场景和消费级音频(如音乐播放),可以设置较高延迟;对于延迟敏感的工作场景(如专业音频,即 professional audio),可以设置低延迟。

与 CRAS 类似、但与 PulseAudio 不同的是,PipeWire 不是基于 audio-buffer rewinding(音频缓冲区重写)机制的。当基于定时器的音频调度在使用非常大的 buffer 时(就像 PulseAudio 一样),就需要能支持重写声卡中的 buffer,以便对意料之外的事件(如新加入的音频流或者音频流的音量发生了变化)能够提供低延迟响应(low-latency response)。这是必须撤销(revoke)已经发送到音频设备的那个大 buffer,并提交一个新的 buffer。这导致代码复杂性显著增加,也会有更多的corner case需要处理。PipeWire 和 CRAS 都将 latency/buffering 的最大值设置得很小,从而完全没有必要进行 buffer rewinding 了。

与 JACK 一样,PipeWire 选择了外部会话管理器(external-session-manager)。专业音频用户通常会在会话管理程序(如 Catia 或 QjackCtl)中构建自己的音频流水线(audio pipeline),然后让音频守护进程来根据最终设置来执行。这样做的好处是将 policy(也就是如何构建媒体流水线)与 mechanism(音频守护进程如何执行流水线)两者分开了。在 GUADEC 2018 上,开发者明确请求 Taymans[视频,23:15]让 GNOME 以及其他可能的外部守护进程来控制 audio stack 中的相关部分。一些系统集成方已经遇到了问题,因为 PulseAudio 的音频路由策略决策是深深藏在其内部模块代码中的。这也是 Henningson 的退出邮件中提到的痛点之一。

最后,顺应过去十年出现的多个有影响力的系统守护进程的趋势,PipeWire 大量使用了 Linux 内核专用的 API。这包括 memfd、eventfd、timerfd、signalfd、epoll 和 dma-buf——所有这些都将 "文件描述符,file-descriptor" 作为系统中 event 和 shared buffer 的主要标识符。PipeWire 可以 import dma-buf 文件描述符,这是其能高效实现 Wayland 抓屏和录屏的关键。对于 4K 和 8K 这些大屏幕,CPU 不需要碰那些非常大的 GPU buffer。GNOME mutter(或其他类似的应用程序) 会传递一个 dma-buf 描述符供 PipeWire 的 SPA pipeline,用来进行进一步的处理和采集。

Adoption

native PipeWire API 从这个项目的 0.3 版本就被定为 stable 了。通过 PipeWire ALSA 插件就可以支持原有的 raw ALSA 应用程序。如果同时安装了 native PipeWire 和 PipeWire JACK library,则通过重新实现的 JACK 客户端函数库和 pw-jack 工具就能支持使用了 JACK 的应用程序。使用了 PulseAudio 的应用程序则通过 pipewire-pulse 守护进程来支持,该守护进程会监听 PulseAudio 自己的 socket 并转为 native communication protocol。这样,那些使用了自带的 native PulseAudio client libraries 的容器化桌面应用程序仍可以得到支持。WebRTC 是所有主流浏览器使用的通信框架(代码),支持了 native PipeWire support for Wayland screen sharing, 并通过 Flatpak portal 进行协调(mediate)。

下图显示了在 Arch Linux 系统上使用 pw-dot 工具 生成的 PipeWire 多媒体流水线,经过了一些美化。图中可以看到组合了 PipeWire-native 和 PulseAudio-native 的应用程序。

左边,GNOME Cheese 和用 gst-launch-1.0 创建的 GStreamer pipeline instance 都在并行访问同一个摄像头录制的数据。中间,Firefox 正在使用 WebRTC 和 Flatpak portal 共享屏幕内容(用于 Jitsi 会议)。右边的 Spotify 音乐播放器(是一个 PulseAudio 应用程序)正在播放音频,这些音频被路由传送到系统默认的 ALSA sink,并且 GNOME Settings(是另一个 PulseAudio 应用程序)正在实时监控该 sink 的左/右声道状态。

在各大 Linux 发行版中,Fedora 从 Fedora 27 版本开始就提供了 PipeWire 守护程序(仅用于 Wayland 抓屏)。Debian 提供了 PipeWire 包,但不支持替代 PulseAudio 或 JACK。Arch Linux 在其仓库中提供了 PipeWire,并且如果用户需要的话,可以使用官方提供的其他包来帮助实现替换 PulseAudio 和 JACK。同样,Gentoo 也为替换这两个守护进程提供了大量的文档。即将发布的 Fedora 34 版本将是第一个默认用 PipeWire 完全替换(开箱即用) PulseAudio 的 Linux 发行版。

总的来说,这是 Linux 多媒体领域的一个关键时刻。虽然开源是一个关于技术的故事,但它同时也是一个关于努力创造技术的人的故事。值得指出的是,PulseAudio 和 JACK 的开发者都有一个共识,那就是 PipeWire 和它的作者在做正确的事情。即将发布的 Fedora 34 应该就是一个试金石,关乎 PipeWire 今后 Linux 各大发行版中能否得到采用。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

PipeWire 简介 是一个底层的多媒体框架,旨在替代 PulseAudio 和 JACK 这些 Linux 平台更为传统的音频服务器,它聚焦于处理多媒体数据 (主要是音频、视频和 MIDI),提供更灵活和高效的音频、视频处理能力。PipeWire 项目的创始人及最核心贡献者是,他是一位著名的软件工程师和开源开发者,特别是在多媒体和音视频领域。除了 PipeWire 项目, 阅读详情

相关推荐

交叉编译pipewire

pipewire是一个服务器和用户空间API,用于 处理多媒体管道。

weixin_42317175的博客 636

在Ubuntu下将pulseaudio换成pipewire

PulseAudio 是一个成熟且广泛使用的音频服务器,适合一般桌面音频需求,但在性能和延迟上有一定限制。PipeWire 是一个更现代的解决方案,旨在统一音频和视频处理,提供高性能和低延迟的多媒体处理能力,逐渐成为 Linux 生态系统中的主流选择。这里我们要处理一个实时的音频,故我们要选择PipeWire作为我们的音频框架。更新Pipewire启用 pipewire-media-session服务。这里我选择重启后看到已经替换成pipewire了。安装蓝牙依赖否则会导致蓝牙无法使用的情况。

Nautiluss的博客 3516

Linux音频之PipeWire初识

PipeWire 则集成了 JACK 的功能,支持专业音频处理需求,允许用户直接调整缓冲区大小,从而实现更低的延迟。链接: https://notes.z-dd.online/2025/12/03/Linux%E9%9F%B3%E9%A2%91%E4%B9%8BPipeWire%E5%88%9D%E8%AF%86/PulseAudio 长期以来是 Linux 主流音频解决方案,而 PipeWire 是新一代音频服务器,已经在逐渐取代 PulseAudio,提供更强大的功能和更低的延迟。

DD'Notes 696

PipeWire 指南:下一代音频和视频服务框架

PipeWire 指南:下一代音频和视频服务框架 去发现同类优质开源项目:https://gitcode.com/ 在数字化的时代,音频和视频处理是计算机系统中的核心部分,而 PipeWire 是一个现代化的框架,旨在统一这些服务,为Linux和其他类Unix系统提供更高效、灵活的解决方案。在这个项目的指南中,我们将深入探讨PipeWire的技术特性,应用场景以及为何你应该考虑使用它。 项目简介 ...

gitblog_00062的博客 2318

PipeWire 音频设计与实现分析四——事件循环的设计与实现

PipeWire 的事件循环基于两个插件的 4 个接口实现,它们是插件的接口,插件的和。PipeWire 的 SPA 系统功能,即接口,用对象描述,系统功能方法集用对象描述,这两个类型定义 (位于对象的字段将指向对象。PipeWire 提供了一些宏,由对象调用的各个方法,这些宏的定义 (位于SPA 系统功能用来执行文件操作以及访问时钟,包括文件读写、poll、关闭、pollfd 操作、timerfd 操作、eventfd 操作和 signalfd 操作等。插件的和接口,分别用和。

tq08g2z的专栏 1094

PipeWire 音频设计与实现分析一——介绍

PipeWire 是一个基于图的媒体处理引擎,一个可以运行多媒体节点图的媒体服务器,是 Linux 的音频/视频总线,它管理 Linux 系统中,不同应用程序对音频和视频设备的共享访问。它提供了一个本地客户端音频 API,但也提供兼容层来支持使用常见的音频 API,包括 ALSA、PulseAudio 和 JACK。PipeWire 在媒体节点图的处理方面,采用机制与策略分离的设计。PipeWire 主守护进程运行媒体节点图,是机制而不是策略。

tq08g2z的专栏 2097

推荐开源项目:PipeWire —— 统一的音频与视频服务框架

推荐开源项目:PipeWire —— 统一的音频与视频服务框架 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 PipeWire 是一款先进的开源框架,旨在统一Linux系统中的音频和视频服务。它提供了一种现代化的方法来处理媒体流,旨在替代PulseAudio和Jack等传统解决方案。通过PipeWire,开发者可以构建更高效、更灵活的多媒体应用,并实现跨平台兼容性。 ...

gitblog_00069的博客 955

ubuntu的声音控制系统pipewire后pulseaudio

例如,要播放 MP3 文件,可以使用 gst-launch-1.0 playbin uri=file:///path/to/file.mp3 命令。PulseAudio:PulseAudio 是一个通用的音频框架,Ubuntu 默认使用它来管理系统的音频。例如,要设置默认音频设备,可以使用 pacmd set-default-sink 命令。如果您想通过图形用户界面来进行音频设置,可以使用 Ubuntu 20 的系统设置界面,它提供了一个名为“声音”的选项卡,您可。

宝安小雨 2820

PipeWire软件简介

PipeWire 还提供了一些工具,如 `pw-cat` 用于播放和录制音频和 MIDI,`pw-cli` 用于交互式地或执行单个命令来检查服务器信息,以及 `pw-dot`、`pw-top` 和 `pw-dump` 用于监控和转储 PipeWire 守护进程的状态。PipeWire 是一个现代化的框架,它统一了音频、视频流处理和设备管理,提供了一个高效的多媒体服务框架,适用于 Linux 和其他类 Unix 系统。它采用了模块化设计,支持多线程和多进程通信,具有强大的插件系统,并提供了细粒度的权限控制。

地球空间 1742

【音频】Ubuntu24.04中pipewire音频服务器的使用

pipewire:在Ubuntu22.04及以上系统中,用来代替 PulseAudio,负责管理音频设备、路由等核心功能;wireplumber:PipeWire 的 “会话管理器”,负责处理设备热插拔、音频配置等,是 PipeWire 正常工作的必需进程。

郭老二 524

CS231n+assignment2(一)

cs231n作业二详解+代码

qq_56551150的博客 2411

debian12开启pipewire替代pulseaudio

添加了一张无线网卡,上面带的蓝牙无法连接蓝牙耳机,经过一番尝试,发现将默认的pulseaudio替换为pipewire可以解决。安装pipewire。

czw 2446

Rsoft仿真实战:长周期光纤光栅参数优化与模式耦合分析

本文详细介绍了使用Rsoft软件进行长周期光纤光栅(LPFG)参数优化与模式耦合分析的实战方法。通过Rsoft仿真,可以高效优化光栅周期、包层厚度等关键参数,深入分析纤芯模与包层模的耦合特性,为光纤通信和传感应用提供可靠的设计依据。

h0i1j2k3l的博客 1115

基于Linux的音乐音效软件,在Arch Linux系统上可用Pipewire取代PulseEffects音效软件

如果你想在Arch Linux系统下用Pipewire取代PulseEffects,则只需要在终端中运行sudo pacman -S pipewire-pulse命令就可以了。介绍PulseEffects是GNU/Linux平台最重要的音效控制软件,拥有图形均衡器、压缩器、混响、降噪等效果模块,可以在用户空间调节输入输出的音频效果。项目地址:https://github.com/wwmm/puls...

weixin_29029673的博客 2714

2026最新 OpenClaw 手机端部署与实战:旧手机秒变 AI 智能终端(Android/iOS 双平台全覆盖)

OpenClaw 是2026年 GitHub 爆火的开源自托管 AI 执行网关,前身是 Clawdbot / Moltbot,主打“一句话让 AI 帮你完成真实操作”,核心能力包括发消息、整理文件、控制设备、自动化任务等,区别于普通对话式 AI,它能将 AI 指令转化为实际行动。无需高配置设备,无需专业技术,旧手机就能变身随身 AI 助手,既能实现自动化办公、生活便捷,又能保障数据隐私,还能体验极客玩法,这正是开源技术的魅力。# 初始化配置(按提示操作,配置 AI 模型 API Key)

wohaiweifaju的博客 5644

OneNet新版MQTT+OneJSON接入全指南

物联网云平台设备接入是嵌入式系统与云端协同的基础能力,其核心依赖于标准化通信协议与统一数据模型。MQTT作为轻量级发布/订阅协议,凭借低带宽占用和高可靠性,成为边缘设备上云的主流选择;而物模型(Thing Model)则定义了设备能力的数字契约,支撑数据语义化与平台自治管理。OneNet新版强制采用MQTT+OneJSON协议栈,不仅提升数据解析一致性与安全认证强度,更推动开发范式从‘协议适配’转向‘模型驱动’。该架构广泛适用于环境监测、智能表计、工业传感等场景,尤其利好基于ESP8266、STM32等资源

weixin_42599558的博客 361

Linux 音频系统全景解析:PipeWire、PulseAudio 与 ALSA 的层次关系

本文系统解析了Linux音频架构的多层体系:内核ALSA驱动提供硬件控制,UCM2定义声卡场景配置,PulseAudio路径策略决定控件切换逻辑,PipeWire作为新一代音频服务器整合各层功能。整个系统通过alsa-card-profile实现配置转换,最终由桌面UI调用PipeWire/PulseAudio API完成用户交互。这种分层设计既保持硬件兼容性,又提供灵活的音频处理能力,是Linux音频系统的核心架构特点。

qq_30883899的博客 641

ChromeOS安装教程

ChromeOS,是基于Linux内核研发的ChromiumOS开源系统的闭源系统,最大的特色就是内置了Chrome浏览器,早期主要以Web云端应用程序为主,后来逐渐引入了Android子系统和Linux子系统。本文主要简述摸索的家用笔记本安装ChromeOS安装方法,供各位玩机朋友参考。

weixin_45751495的博客 8109

musikcube音频输出插件对比:ALSA、PulseAudio、PipeWire哪个更适合你?

在Linux音频世界中,选择合适的音频输出系统对音乐播放体验至关重要。musikcube作为一款跨平台的终端音乐播放器,提供了多种音频输出插件选择,包括ALSA、PulseAudio和PipeWire。这些插件位于[src/plugins/](https://link.gitcode.com/i/cf4f1b7965865571fd86ab5c6cb4de4a)目录下,分别是[alsaout/](

gitblog_00183的博客 701

Ansys Maxwell磁场仿真入门:无线传能线圈自感与互感计算全流程

本文详细介绍了使用Ansys Maxwell进行无线充电线圈磁场仿真的全流程,包括模型建立、求解器设置、电感参数提取及优化策略。通过实战案例,帮助工程师掌握线圈自感与互感计算技巧,提升无线充电系统设计效率与精度。重点解析了Maxwell在磁场仿真中的关键应用,适用于电磁场仿真初学者和进阶用户。

weixin_29047545的博客 436

新华硕笔记本ubuntu18.04双系统安装之后,wifi没有显示无法链接wifi

本来我以为跟简单安装一个wifi网卡的驱动就可以解决的问题,没想到花了我一早上的时候解决… 惭愧。 另外,本来是没打算写这篇博客的,但是我在搜索解决这个问题的过程中, 发现多人提出的解决方案跟我的都不一样,甚至我的解决方案都没有搜到相应的答案,还是只能靠自己啊。。 言归正传,还是说说怎么正确的安装wifi驱动吧! 1. wifi没有正确安装、或没有正确配置的表现 我的电脑现象: 有wifi图标, wifi设置上显示unaviable,无法搜索到任何wifi; 还有其他类似的表现,大家可以看看其他朋友的提

Ian的博客 1889

PipeWire新手必看:从PulseAudio迁移到PipeWire的5个实用技巧

本文为Linux用户提供从PulseAudio迁移到PipeWire的5个实用技巧,涵盖兼容层配置、会话管理器选择、设备配置、工具链迁移和疑难问题解决。PipeWire作为新一代音频系统,通过统一架构实现低延迟传输,是专业音频与多媒体应用的理想选择。

lg888的博客 1080

【第1章>第9节】基于FPGA的图像开运算处理算法的Verilog实现

本文介绍了基于FPGA的开运算图像处理实现方法。主要内容包括:1)输入图像二值化处理,通过阈值将灰度图像转换为二值图像;2)数据缓存与窗口提取,使用寄存器数组缓存5行图像数据并构建5×5处理窗口;3)腐蚀运算逻辑,判断窗口内是否全为白色像素;4)膨胀运算逻辑,检测窗口内是否存在白色像素。最后给出了Verilog实现方案,通过级联腐蚀和膨胀模块完成开运算处理。该方法可用于FPGA图像处理算法开发。

MATLAB,verilog,python,opencv,tensorflow,caffe,C,C++ 313

PipeWire技术

节点间通过UNIX socket传递FD(文件描述符),实现GPU显存到音频缓冲区的零拷贝传输[2]这种分裂促使PipeWire采用。

地球空间 654

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

PulseAudio 与 PipeWire

摘要: PulseAudio诞生于2004年,是Linux桌面音频中间层,提供多应用混音、独立音量和设备热插拔管理,但仅专注音频,架构老旧且延迟较高。其核心包括守护进程、客户端库和模块化设计,支持网络音频传输和蓝牙设备,但依赖ALSA且缺乏视频管理能力。 PipeWire是2017年推出的下一代音视频统一框架,完全兼容PulseAudio并替代其功能,同时整合JACK专业音频和视频流管理。它采用模块化设计,支持低延迟调度、安全沙箱和容器化部署,显著优化蓝牙稳定性和资源占用,成为现代Linux发行版的首选方案

tangzhangyin的专栏 754

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: LWN: Fedora的后备域名解析服务器
下一篇: LWN:Python的两个安全漏洞!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值