2011-02-24 2 views
3

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'에서 번호가 매겨진 값을받을 수 있나요 나에게 값을 조작 할 수 있도록 (예 : 일부 필터를 통과) 플로트 어레이를 제공합니까?

모든 의견을 크게 환영합니다!

답변

4

왜 NSData 객체가 필요한지 잘 모르겠습니다.

kAudioFilePropertyDataFormat과 함께 AudioFileGetProperty를 사용하면 오디오 데이터 형식 (예 : 플로트 배열) 등을 결정할 수 있어야하므로 "theData"를 해석하는 방법을 결정할 수 있어야합니다.

+0

안녕하세요 JonoB, 답장을 보내 주셔서 감사합니다. NSData를 사용할 필요는 없습니다. 나는 단지 수레 배열을 얻을 필요가있다. kAudioFilePropertyDataFormat을 사용하는 몇 가지 예를 보여줄 수 있습니까? 일부 코드 줄은 매우 유용 할 것입니다. – saurb

+0

예 : (실제로 다음을 컴파일/테스트하지 않고도 아이디어를 얻을 수 있습니다.) AudioStreamBasicDescription theFileFormat; AudioFileGetProperty (audioFile, kAudioFilePropertyClientDataFormat, & thePropertySize, & audioFile); // 현재 AudioFileReadBytes를 사용 중입니다. ...; if (theFileFormat.mFormatFlags & kAudioFormatFlagIsFloat) { // 데이터가 부동 형식입니다. float * dataAsFloat = (float *) theData; // 이제 데이터를 플로트로 액세스 할 수 있습니다. dataAsFloat [0]. }' –

관련 문제