android - 在 Android 中以编程方式写入 PCM WAV 数据

标签 android

我正在寻找一种以编程方式将短裤数组保存为 PCM 数据的方法。我知道这应该是可行的,但我还没有找到在 Android 上执行此操作的非常简单的方法。

本质上,我正在获取电压数据,并且我想将其保存为 PCM 格式。我的函数看起来像这样:

  public void audifySignal(short[] signal) {
    // Create a WAV file from the incoming signal
  }

任何建议都很棒,甚至是引用。似乎内置于 android 中的音频 API 更适合直接从麦克风录制,而不适合较低级别的信号处理类型工作(至少用于将原始数据保存到文件中)。我还想避免手动编写 PCM 文件头以及其他...

谢谢!

最佳答案

Sam,我不知道 Android 特定的库,但我会继续说:

原始 PCM 数据非常简单。它通常只是顺序数据。也许您需要了解 WAV 格式才能了解什么是 PCM 及其工作原理。

WAV 被广泛用作未压缩音频的容器。了解 WAV 文件如何包含数据将有助于了解原始数字音频的一般工作原理。

这个页面帮了我不少忙:

http://www.sonicspot.com/guide/wavefiles.html

有趣的是,您可以或多或少地向声卡发射任何数据,它就会播放。这对我们人类来说可能听起来很疯狂,因为声卡不关心它听起来是否乱码。

听起来是否悦耳取决于您是否提供了正确的样本量、声道数、频率和一些符合前者的 PCM 数据。

请注意,您无法从原始 PCM 数据本身“检测”样本大小、 channel 数或正确频率。您必须将此关键数据与 PCM 数据一起存储,以便其他软件可以让声卡知道如何处理您的 PCM 数据。

这就是 WAV 容器格式的用武之地。

还有其他格式,但 WAV 非常普遍,因此是一个很好的起点。

干杯 特里斯滕

关于android - 在 Android 中以编程方式写入 PCM WAV 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2555738/

相关文章:

java - 类实例问题,Android

android - Android异常运行时无命令输出:'am start <应用程序/应用程序>

Java:如何使 RecyclerView 项目编号更改为 Activity 中的相同编号? (即时的)

java - 发送 0xFF 并计算带符号字节的 CRC - WriteSingleCoil & ModBUS & Java & Android -

android - Android SIP根本没有音频

android - 从其他 Activity 设置 TypeFace - 在每个 Activity 中调用方法或创建新实例?

android - FLAG_ACTIVITY_CLEAR_TOP 没有按预期工作

java - 在 Espresso 测试中断言 ProgressBar 的进度

java - SpannableString 可以序列化吗?

android - 如何从eclipse检测android物理设备?