发送暂停/继续播放以及下一个/上一个曲目蓝牙命令


10

我希望我的Ubuntu PC通过蓝牙向其他设备发送蓝牙音频命令(播放/暂停,下一首/上一首歌曲以及向上/向下)以及向其他设备传输音乐。换句话说,我想将我的Ubuntu PC“假装”为一种蓝牙耳机,它能够更改曲目,暂停和恢复音乐。

我有下面的pavucontrol屏幕截图说明了以下设置(pt2通过蓝牙连接的设备): 在此处输入图片说明 在此处输入图片说明

在此配置中,流传输按预期方式工作(我可以听到从播放的音乐pt2),但是我找不到任何能够发送任何信号(例如暂停/继续播放或更改曲目)的方法。

我已经发现,有许多蓝牙协议允许特定功能。如果我正确理解规格,则我感兴趣的是A2DP,这是现在连接设备的方式。但是在配置文件下拉列表中,我还选择了HSP / HFP耳机主机,HSP / HFP耳机网关并关闭。

我将使用Python开发自己的应用程序,该应用程序将允许发送此类命令,因此我对通过Python API或bash命令发送它们很感兴趣。

我问这个问题是因为我对如何与蓝牙设备通信感兴趣。


我没有机会进行测试,但是我也对该解决方案感兴趣,因为在这里的讨论中,我遇到了同样的问题:ubuntuforums.org/…似乎只需要添加输入模块即可加载,但是信息不是很多职位。
AtomiX84 '19

@ AtomiX84我有一个相反的问题。我想让我的PC装扮成耳机,而不是连接到PC上的耳机来播放音乐。
pt12lol


@kenn我想看看很具体的东西,而您链接到的答案则看起来相当笼统。您能否提供针对我的用例的更详细的示例?
pt12lol

我不是该领域的专家,您可以搜索github。还可以看看此链接stackoverflow.com/questions/48932249/…–
肯(肯)

Answers:


10

通过@kenn启发,我决定去深入dbusd-feet工具。最终,我使用以下命令达到了目标:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_44_78_3E_85_9D_6F org.bluez.MediaControl1.Play

当然会触发在通过蓝牙连接到PC的移动设备上播放音乐。

通常,对于蓝牙设备,此命令如下所示:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated> org.bluez.MediaControl1.<command_to_send>

为了检查您设备的MAC地址,请运行bt-devices -l。它将在括号中列出所有已知(但不一定是连接的,甚至不是发现的)设备的MAC地址。

为了找到允许的命令列表,请d-feet使用安装sudo apt install d-feet。运行它之后,bluezSystem Bus选项卡下应用搜索查询,并使用设备的MAC查找条目:

在此处输入图片说明

有些方法类似于在下使用蓝牙耳机的东西org.bluez.MediaControl1。但是,当您浏览这些树时,可以找到更多的方法,这确实值得您注意。

dbus-send是用于使用发送信号的命令dbus--system开关表示我们要使用System Busd-feet标签中的内容。我还没有尝试过,但是我想--print-reply这只是出于调试目的,不是强制性的。在d英尺标头中--dest=org.blez引用Name/org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>org.bluez.MediaControl1.<command>参考对象树路径。


这很棒 !您将这些dbus-send命令映射到PC的媒体按钮上还是打算使用它?
罗伯特·里德尔

1
@Robert Riedl我想捕获游戏手柄上的按钮事件,并使用发送到移动设备的特定命令将它们映射,该命令将音乐流式传输到我的计算机。这个项目的动机是我儿子喜欢做音乐经理,但我不希望他在银幕上花费太多时间。因此,我决定为他提供其他类型的UX;)
pt12lol
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.