给定一个音频文件'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;
答案 0 :(得分:0)
您可以使用一些不同的API,这取决于您想要多少控制,以及您计划如何处理音频数据。 ExtendedAudioFile API用于获取音频数据和绘制数据等基本操作。
要实现这一点似乎需要很多代码,就像你必须创建一个AudioStreamBasicDescription对象并正确配置它一样,但它允许你非常快速地读取整个音频文件并访问所有样本以进行绘图。
GW