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

AudioFileIDの を通じてそれを行うことができます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 に答える