我设计了一个可以记录数据并同时使用蓝牙a2dp配置文件发送数据的电路。我的电路是源,电脑是水槽。我的主要目标是在matlab中接收数据和进程。我研究了A2DP数据包,并简要介绍了如何使用SBC编解码器解码数据包。我的主要问题是我无法使用tera术语接收这些数据包。我有一种感觉,tera不会想要接收a2dp数据包。如果是这样,我可以使用什么软件?是否可以使用matlab?
或者,当我尝试使用blue soleil IVT时,我可以在电脑上播放音频文件。但不幸的是,它并没有让我转移到matlab。
我可以通过其他任何方式实现它吗?
由于
编辑: 好的,我看到有一个由IVT bluesoleil提供的SDK,但只有两个与A2DP相关的功能。我认为这对我帮助不大。关于如何解码它们的任何线索? 参考:第6.3.7.2节 - Bluesoleil SDK)
答案 0 :(得分:1)
由于我没有收到任何答复,我将在对A2DP进行简短研究后提及我所知道的内容。首先,a2dp数据包结构使用AVDTP指定的数据包格式,可以在蓝牙规范结构中找到。该分组结构包括具有嵌入其中的编解码器的数据分组。该编解码器可以是SBC(子带编码)或MPEG v1 / 2。
默认情况下,A2DP使用SBC。要了解有关SBC的更多详细信息,请参阅bluetooth.org上的A2DP蓝牙规格表。我将附上以下链接。 A2DP规格表中有一节准确说明了如何对音频信号进行编码和解码。在解码时,您获得PCM信号,我相信,你知道如何处理它:)。我不得不坚持使用SBC,因为我的硬件模块(bluegiga wt-32)不支持MPEG :(。
具体谈到我的情况,由于matlab中缺少a2dp功能,我不得不创建C代码来接收AVDTP数据包。用C语言解码的数据包和音频信息(pcm数组)通过使用一些愚蠢的链接技术进一步提供给我的matlab工作区,因此,最后我的matlab能够使用wavplay / audioplay函数对其进行流式传输。希望这会有所帮助。
[1]蓝牙核心规范v2.1 - https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=241363
[2] bluetooth a2dp 1.2 spec- https://www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=66605
[3] - AVDTP - www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=66607