在 Linux 上使用 bluealsa 从蓝牙耳机录制音频

Posted

技术标签:

【中文标题】在 Linux 上使用 bluealsa 从蓝牙耳机录制音频【英文标题】:record audio from bluetooth headset using bluealsa on Linux 【发布时间】:2020-09-29 03:13:57 【问题描述】:

我在 Raspberry pi zero 上使用板载蓝牙,并连接了一个也有麦克风的蓝牙扬声器。我想用这个 BT 扬声器麦克风录制音频。

我了解 bluealsa 命令行可用于此目的,也可用于播放 .wav 音频文件。

我无法成功使用 bluealsa sco 配置文件录制音频。 (操作系统:Dietpi) 该设备能够连接到pi,并且可以播放wav文件, 使用:aplay -D bluealsa:DEV=XX:XX:XX:XX:XX:XX,PROFILE=a2dp sample.wav

但是,使用 arecord 时,它表示正在录制,但不录制任何内容,也不会引发任何错误。

使用:arecord -f cd -D bluealsa:DEV=XX:XX:XX:XX:XX:XX,PROFILE=sco test.wav

输出:录制 WAVE 'test.wav':有符号 16 位 Little Endian,速率 44100 Hz,立体声

test.wav 在系统上只显示 44 个字节:

-rw-r--r-- 1 root root 44 Jun 9 15:38 test.wav

当我尝试播放录制的文件时,它只是噪音。

有人可以帮忙吗? bluealsa 包本身是否支持从 BTspeakers 录制?

【问题讨论】:

同样的问题,但还没有答案:raspberrypi.org/forums/viewtopic.php?t=201101 @key_ 经过一番摸索后,我发现了缺少的东西。引擎盖下有一个关键方面出了问题。所以,基本上 bluealsa 服务需要启动多个配置文件,如 a2dp-source、a2dp-sink 和 hfp-ag、hsp-ag。请参阅我的答案以获取更多详细信息。 @key_ 同样,您是使用 apt-get 安装 bluealsa 还是从源代码编译它。看起来使用 apt-get,安装了旧版本的 bluealsa,显然它没有实现录音功能。 谢谢分享。我放弃了这个。也许我会在一个视图年再试一次。 【参考方案1】:

就像我说的,经过一番摸索,发现在 bluealsa 服务启动时缺少一些关键方面。

    默认情况下,bluealsa 服务仅以“a2dp-source”配置文件开头。这仅用于播放音频。但要录制音频,它需要“a2dp-sink”、“hfp-ag”和“hsp-ag”配置文件。

    如果您使用任何基于 raspberry 或 ubuntu 的发行版,请使用以下命令。 “systemctl cat bluealsa” 这显示了“bluealsa”服务的单元文件。它应该有下面的 ExecStart 行。 ExecStart=/usr/bin/bluealsa -p a2dp-sink -p a2dp-source -p hfp-ag -p hsp-ag

3.通常我观察到的是没有任何 -p 选项传递给它。更改单元文件并重新启动服务。 注意:无论何时任何 systemctl 单元文件发生更改,都必须执行以下命令才能使更改生效。

1. "systemctl daemon-reload"
2. systemctl restart bluealsa

4.另外需要注意的是:在asounrc文件中使用profile“sco”。

进行这些更改后,录制音频应该可以正常工作了!这对我有用!经过漫长的磨难!

【讨论】:

以上是关于在 Linux 上使用 bluealsa 从蓝牙耳机录制音频的主要内容,如果未能解决你的问题,请参考以下文章

蓝牙耳机下方显示时间标志

杂牌蓝牙耳机软件调试

蓝牙耳机怎么连接电脑

怎样在Linux中使用蓝牙

如何在 Linux x86 上使用 C 对蓝牙 LE 设备进行编程?

Linux 上 C blueZ 中的蓝牙配对