1

给定一个音频文件“coolsound.aif”,我该如何处理检索声音数据块(SSND 块)并遍历它们以进行任意处理的任务?我希望能够实现以下目标:

/*
* Pseudocode of what I'd like to do
*/

// get SSND chunks out of audio file somehow
Array soundDatachunks = getSSNDChunksFromSoundFile("coolsound.aif");

// iterate over each chunk
foreach(soundDataChunks as chunk){

  // Now iterate over each element in the waveForm data array
  foreach(chunk.waveForm as w){
      //Just log it to debug console for now
      Log(w);
  }
}

其他信息:
- 我的目标是使用波形数据以图形方式可视化音频文件。
- 音频文件是使用 AudioToolbox以这种方式录制的。
- SSND 块具有此中显示的结构:

typedef struct {
      ID             chunkID;
      long           chunkSize;
      unsigned long  offset;
      unsigned long  blockSize;
      unsigned char  WaveformData[];
    }  SoundDataChunk;
4

1 回答 1

0

您可以使用几种不同的 API,这完全取决于您想要多少控制,以及您计划对音频数据做什么。ExtendedAudioFile API 用于获取音频数据和绘制它等基本操作。

实现这一点似乎需要很多代码,比如您必须创建一个 AudioStreamBasicDescription 对象并正确配置它,但它允许您非常快速地读取整个音频文件并访问所有用于绘图的示例。

GW

于 2012-12-22T05:26:02.723 回答