我想向用户显示现有MP3文件和AAC文件的比特率,但我不知道如何正确提取这些文件的比特率。
到目前为止,我已经尝试获取AudioConverterRef
的{{1}}指针然后我想从转换器中获取比特率,但我的问题已经在第一步开始了。我获得了ExtAudioFileRef
属性的NULL
:
kExtAudioFileProperty_AudioConverter
我可以成功地从同一 OSStatus status;
AudioConverterRef result = NULL;
UInt32 size = sizeof(result);
status = ExtAudioFileGetProperty(fileRef, kExtAudioFileProperty_AudioConverter, &size, &result);
assert(status == noErr);
assert(result != NULL); // here it fails
阅读AudioStreamBasicDescription
,因此fileRef
没问题。
如何获取压缩音频文件的比特率?
答案 0 :(得分:1)
您可以通过AudioFileID
:{/ p>的ExtAudioFileRef
来完成此操作
- (void) someMethod {
ExtAudioFileRef extAudioFileRef = ...; // init extAudioFileRef in some way
AudioFileID audioFileId = [self getAudioFileID:extAudioFileRef];;
UInt32 bitRate = [self getBitRate:audioFileId];
}
- (AudioFileID) getAudioFileID:(ExtAudioFileRef)fileRef {
OSStatus status;
AudioFileID result = NULL;
UInt32 size = sizeof(result);
status = ExtAudioFileGetProperty(fileRef, kExtAudioFileProperty_AudioFile, &size, &result);
assert(status == noErr);
return result;
}
- (UInt32) getBitRate:(AudioFileID)audioFileId {
OSStatus status;
UInt32 result = 0;
UInt32 size = sizeof(result);
status = AudioFileGetProperty(audioFileId, kAudioFilePropertyBitRate, &size, &result);
assert(status == noErr);
return result;
}