[英]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.