我正在研究包含电子麻醉镜的工程论文。音频由I2S麦克风(Adafruit SPH0645)采集,其输出由每个样本上的18位有效数据组成。因此,我决定使用PCM-24格式,并且可以使用.NET库NAudio播放和查看图形(心电图)。
该项目的范围必须主要考虑具有Android的移动设备,并且这些设备必须通过硬件(服务器)创建的TCP套接字进行连接,并在该套接字上连续不断地传输PCM-24格式的音频。下图将阐明所公开的功能:
我一直在研究Android提供AudioTrack作为播放PCM文件的本机库,但似乎只支持PCM-8,PCM-16和PCM-float,据我所知,它们需要更高的API级别。
我找不到其他可以帮助我完成此任务的库,但由于PCM-24是另一种常用标准,因此似乎很奇怪。
有什么方法可以在Android中播放PCM-24音频吗?
另一方面,如果没有办法,尽管需要处理和填充值,我应该考虑减少到PCM-16或增加到PCM-32-FP的哪些问题?
最佳答案
我认为您已经走上了正确的道路。如您所见,https://source.android.com/devices/audio/data_formats Android内部支持多种格式,但仅公开了一个子集,可能是出于兼容性考虑。参见此处:https://developer.android.com/guide/topics/media/media-formats。
我建议您将其转换为16位PCM。与传感器的频率响应和分辨率相比,心跳或脉搏是一个缓慢的过程,因此,在播放声音或显示超声心动图的过程中,您将安全且不会丢失任何信息。
转换为16位时要小心,确保PCM24不会对单词使用任何奇怪的定位,有时是这样。除此之外,右移样本就足够了。
对于数据的进一步处理(例如检测心律不齐等),请使用原始的基于24位的样本。祝好运!
关于android - 如何播放PCM-24音频?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52547639/