You can get an ASBD file with 2 (at least) different methods. You can use "ExtAudioFileGetProperty" or "AudioFileGetProperty".
AudioFileGetProperty:
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"m4a"]; CFURLRef soundFileURL = (__bridge CFURLRef)[NSURL fileURLWithPath:soundFilePath]; if (soundFileURL != nil) { AudioFileID audioFile; OSStatus theError = noErr; theError = AudioFileOpenURL(soundFileURL, kAudioFileReadPermission, 0, &audioFile); if(theError != noErr) { printf("AudioFileOpenURL failed!"); return; } AudioStreamBasicDescription asbd; UInt32 size = sizeof(asbd); theError = AudioFileGetProperty(audioFile, kAudioFilePropertyDataFormat, &size, &asbd); if(theError != noErr) { printf("kAudioFilePropertyDataFormat failed!"); return; } else { printf("Sample Rate : %f\n", asbd.mSampleRate); } }
ExtAudioFileGetProperty:
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"m4a"]; CFURLRef soundFileURL = (__bridge CFURLRef)[NSURL fileURLWithPath:soundFilePath]; if (soundFileURL != nil) { OSStatus theError = noErr; ExtAudioFileRef fileRef; theError = ExtAudioFileOpenURL(soundFileURL, &fileRef); if(theError != noErr) { printf("ExtAudioFileOpenURL failed!"); return; } AudioStreamBasicDescription asbd; UInt32 size = sizeof(asbd); theError = ExtAudioFileGetProperty(fileRef, kExtAudioFileProperty_FileDataFormat, &size, &asbd ); }
source share