簡體   English   中英

如何使用音頻文件服務獲取音頻文件的原始數據?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM