我試圖確定音頻文件是否在Cocoa應用程序(OS X 10.8+)中使用VBR。確定音頻文件是否爲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);
爲什麼說謊的情況?我究竟做錯了什麼?
如何可靠地確定Cocoa應用程序中音頻文件的VBR性?
VBR和CBR示例文件可以獲得(不是我的網頁)。
看看http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header部分2.3介紹了有關VBR標題,我測試了它從您的鏈接文件,它檢測到CBR和VBR文件正確。 – user3473830 2014-09-22 10:00:54