首页 > 解决方案 > 如何播放 PCM-24 音频?

问题描述

我正在写我的工程论文,其中包括电子听诊器。音频由 I2S 麦克风 ( Adafruit SPH0645 ) 采集,其输出由每个样本的 18 位有效数据组成。因此,我决定使用 PCM-24 格式,并且能够通过使用 .NET 库NAudio来播放和查看图形(心音图) 。

该项目的范围必须主要考虑使用 Android 的移动设备,这些设备必须通过硬件(服务器)创建的 TCP 套接字连接,在该套接字上连续传输 PCM-24 格式的音频。下图将阐明暴露的功能:

auriculares: 耳机|conexión inalámbrica: 无线连接

我一直在研究 Android 提供AudioTrack作为播放 PCM 文件的本机库,但似乎只支持 PCM-8、PCM-16 和 PCM-float,据我所知,这需要更高的 API 级别。

我找不到任何其他可以帮助我完成这项任务的库,但看起来很奇怪,因为 PCM-24 是另一种常用的标准。 有没有办法在 Android 中播放 PCM-24 音频

另一方面,如果没有办法做到这一点,尽管需要处理和填充值,但在减少到 PCM-16 或增加到 PCM-32-FP 时我应该考虑哪些问题?

标签: androidpcm

解决方案


我认为你几乎走在正确的轨道上。正如您在此处看到的那样https://source.android.com/devices/audio/data_formats Android 在内部支持多种格式,但只公开了一个子集,可能是为了兼容性;见这里:https ://developer.android.com/guide/topics/media/media-formats 。

我会按照您的建议转换为 16 位 PCM。与传感器的频率响应和分辨率相比,心跳或脉搏是一个缓慢的过程,因此您将安全且不会丢失任何用于播放声音或显示超声心动图的信息。

翻译成 16 位时要小心,确保您的 PCM24 没有对单词使用任何奇怪的定位,因为有时会出现这种情况。除此之外,右移您的样本就足够了。

对于数据的任何进一步处理,例如检测心律失常或类似情况,请使用您原来的基于 24 位的样本。祝你好运!


推荐阅读