1

我想向用户显示现有 MP3 文件和 AAC 文件的比特率,但我不知道如何正确提取这些文件的比特率。

到目前为止,我已经尝试获取 的AudioConverterRef指针,ExtAudioFileRef然后我想从转换器中获取比特率,但我的问题已经从第一步开始了。我得到NULLkExtAudioFileProperty_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,所以fileRef很好。

如何获得压缩音频文件的比特率?

4

1 回答 1

1

你可以通过AudioFileIDa来做到这一点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;
}
于 2014-04-23T13:55:24.263 回答