通过 Dbus 联系 Pulse Audio

Posted

技术标签:

【中文标题】通过 Dbus 联系 Pulse Audio【英文标题】:Contacting Pulse Audio over Dbus 【发布时间】:2012-11-04 09:28:29 【问题描述】:

我正在尝试编写一个基本的卷应用程序。因为我是用 Ruby 编写的,所以我不想扩展 C 库或使用 ffi,而是尝试用 ruby-dbus 编写它指向不存在。 Pulse Audio 是否为dbus 正确配置?

【问题讨论】:

【参考方案1】:

Ubuntu 提供不支持 D-Bus 的 Pulse Audio。要启用它,请将以下行放在文件 /etc/pulse/default.pa 的末尾:

load-module module-dbus-protocol

重启脉冲音频:

pkill pulseaudio; pulseaudio

Solution 位于 pulseaudio-mixer-cli 项目中,该项目演示了如何通过 D-Bus 使用 pulseaudio。

【讨论】:

我想在每个用户级别上进行配置,文件是$HOME/.config/pulse/default.pa 这在升级到 Ubuntu 20 后对于想知道是否需要它的人仍然有效。我在升级过程中接受了配置文件覆盖,并且不得不重新添加它,这表明它们仍然没有加载 dbus 模块【参考方案2】:

在我的系统(openSUSE 12.1)上,PA 确实指向一个现有的套接字。这段代码 (gist)

#! /usr/bin/env ruby
require 'rubygems'
require 'dbus'
b = DBus.session_bus
ps = b.service 'org.PulseAudio1'
po = ps.object '/org/pulseaudio/server_lookup1'
po.introspect
pi = po['org.PulseAudio.ServerLookup1']
a = pi['Address']
path = a.split('=').last
system 'stat', path

生产

$ ruby ~/snippets/dbus-pulseaudio.rb 
  File: `/home/mvidner/.pulse/7c5e87305bb28b5a0661f8180000054c-runtime/dbus-socket'
  Size: 0               Blocks: 0          IO Block: 4096   socket
Device: 801h/2049d      Inode: 1332590     Links: 1
Access: (0777/srwxrwxrwx)  Uid: (11018/ mvidner)   Gid: (  100/   users)
Access: 2012-11-19 09:07:20.566053943 +0100
Modify: 2012-11-19 09:07:20.566053943 +0100
Change: 2012-11-19 09:07:20.566053943 +0100
 Birth: -

【讨论】:

以上是关于通过 Dbus 联系 Pulse Audio的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 dbus-send 发送方法调用?

如何通过 dbus 调用 varargs 函数?

通过 python 和 dbus 启动用户 systemd 服务

通过python监控dbus消息

QtDBUS:通过 DBUS 发送枚举

如何通过 DBus 用 java 发送 sv?