[英]How to use Audio File Services to get the raw data of an audio file?
我正在尝试使用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一起使用,您应该能够确定音频数据的类型(例如浮点数组)等,以及如何解释“theData”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.