如何在iOS中检索和迭代声音数据块?

时间:2012-12-22 00:29:06

标签: objective-c ios audio core-audio aiff

给定一个音频文件'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 in this manner录制音频文件 - SSND块具有此source

中显示的结构
typedef struct {
      ID             chunkID;
      long           chunkSize;
      unsigned long  offset;
      unsigned long  blockSize;
      unsigned char  WaveformData[];
    }  SoundDataChunk;

1 个答案:

答案 0 :(得分:0)

您可以使用一些不同的API,这取决于您想要多少控制,以及您计划如何处理音频数据。 ExtendedAudioFile API用于获取音频数据和绘制数据等基本操作。

要实现这一点似乎需要很多代码,就像你必须创建一个AudioStreamBasicDescription对象并正确配置它一样,但它允许你非常快速地读取整个音频文件并访问所有样本以进行绘图。

GW