Iphone 如何使用音频文件服务获取音频文件的原始数据?

Iphone 如何使用音频文件服务获取音频文件的原始数据?,iphone,core-audio,Iphone,Core Audio,我试图使用AudioToolBox框架中的音频文件服务从wav文件中获取原始数据。具体来说,我使用AudioFileReadBytes()调用来获取字节。以下是我的相关代码: NSString *audioFilePath = [[NSString stringWithCString:argv[1] encoding:NSUTF8StringEncoding]

我试图使用AudioToolBox框架中的音频文件服务从wav文件中获取原始数据。具体来说,我使用AudioFileReadBytes()调用来获取字节。以下是我的相关代码:

NSString *audioFilePath = [[NSString stringWithCString:argv[1]
                                              encoding:NSUTF8StringEncoding]
                           stringByExpandingTildeInPath];          
NSURL *audioURL = [NSURL fileURLWithPath:audioFilePath];               

AudioFileID audioFile;                                               
OSStatus theErr = noErr;
UInt64 fileDataSize = 0;
AudioStreamBasicDescription theFileFormat;
UInt32 thePropertySize = sizeof(theFileFormat);
theErr = AudioFileOpenURL((CFURLRef)audioURL, kAudioFileReadPermission, 0, &audioFile); 

thePropertySize = sizeof(fileDataSize);
theErr = AudioFileGetProperty(audioFile, kAudioFilePropertyAudioDataByteCount, &thePropertySize, &fileDataSize);

//Read data into buffer
UInt32 dataSize = fileDataSize;
void* theData = malloc(dataSize);
if (theData) {
    AudioFileReadBytes(audioFile, false, 0, &dataSize, theData);
            // create an NSData object to hold the buffer data
    NSData* nsdata = [NSData dataWithBytesNoCopy:theData length:dataSize]; //?
}
现在的问题是:在创建NSData对象(NSData)后,如何从中获取编号的值(例如,如果我在Matlab中执行“wavread”,它将给我一个浮点数组),以便我可以操纵这些值(例如,通过一些过滤器)


非常感谢您的任何意见

我不知道为什么需要NSData对象


将AudioFileGetProperty与kAudioFilePropertyDataFormat一起使用,您应该能够确定音频数据的类型(例如浮点数组)等,从而确定如何解释“数据”。

您好,谢谢您的回复。没有必要使用NSData。我只需要得到浮点数的数组。你能给我举一些使用kAudioFilePropertyDataFormat的例子吗?一些代码行将非常有用。(没有实际编译/测试以下内容,但它应该能让您了解):
audiostreambasicd描述文件格式;AudioFileGetProperty(audioFile、kAudioFilePropertyClientDataFormat和thePropertySize以及audioFile);//AudioFileReadBytes,就像您现在正在做的一样;如果(theFileFormat.mFormatFlags&kAudioFormatFlagIsFloat){//数据是浮点格式的。float*dataAsFloat=(float*)数据;//您现在可以以浮点形式访问数据,例如dataAsFloat[0]。}