Я пытаюсь определить, использует ли аудио файл VBR или нет в приложении Cocoa (OS X 10.8+).Определите, является ли аудиофайл VBR
AVFoundation, похоже, не в состоянии ответить на вопрос вообще, и AudioToolbox лжет мне.
Код ниже непреклонно утверждает, что любой mp3-файл, который я набрасываю на него, - VBR; даже для файлов, где я знаю, что это не так (сверяются с MediaInfo)
OSStatus result = noErr;
UInt32 size;
AudioFileID audioFile;
AudioStreamBasicDescription audioFormat;
AudioFormatPropertyID vbrInfo;
// Open audio file.
result = AudioFileOpenURL((__bridge CFURLRef)originalURL, kAudioFileReadPermission, 0, &audioFile);
if(result != noErr)
{
NSLog(@"Error in AudioFileOpenURL: %d", (int)result);
return;
}
// Get data format
size = sizeof(audioFormat);
result = AudioFileGetProperty(audioFile, kAudioFilePropertyDataFormat, &size, &audioFormat);
if(result != noErr)
{
NSLog(@"Error in AudioFileGetProperty: %d", (int)result);
return;
}
// Get vbr info
size = sizeof(vbrInfo);
result = AudioFormatGetProperty(kAudioFormatProperty_FormatIsVBR, sizeof(audioFormat), &audioFormat, &size, &vbrInfo);
if(result != noErr)
{
NSLog(@"Error getting vbr info: %d", (int)result);
return;
}
NSLog(@"%@ is VBR: %d", originalURL.lastPathComponent, vbrInfo);
Почему врет? Что я делаю не так?
Как я могу реально определить VBR-iness аудиофайла в приложении Cocoa?
Файлы образцов VBR и CBR могут быть получены (не на моей странице).
см. Http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header, часть 2.3 описывает заголовки VBR, я тестировал ее против файлов из вашей ссылки и обнаружил CBR и VBR файлы правильно. – user3473830