Как получить битрейт аудио файла в какао - PullRequest
4 голосов
/ 14 мая 2009

Мне нужно получить информацию о битрейте из аудиофайлов, по какой-то причине функция AudioFileGetProperty с константой kAudioFilePropertyBitRate всегда возвращает 0 для меня. То же самое с kAudioFilePropertyInfoDictionary, результирующий словарь не содержит информации о битрейте. Я бы попытался вручную получить это из необработанных данных в случае mp3, но мне нужно поддерживать различные форматы файлов, такие как m4a и другие. Есть ли другой способ сделать это?

1 Ответ

2 голосов
/ 14 мая 2009

Если вы имеете дело с файлом, вы всегда можете попробовать использовать API метаданных Spotlight. Например, если у вас есть путь к вашему аудиофайлу в виде NSString или CFStringRef с именем 'path':

MDItemRef item = MDItemCreate( kCFAllocatorDefault, path );
CFNumberRef audioBitrate = MDItemCopyAttribute( item, kMDItemAudioBitrate );
CFNumberRef totalBitrate = MDItemCopyAttribute( item, kMDItemTotalBitrate );
CFRelease( item );

Это не идеально, но может, по крайней мере, предоставить вам дополнительную справочную информацию, чтобы предположить, почему другой API не работает.

Единственное, о чем я могу думать: kAudioFilePropertyBitRate определено только в OS X 10.5. Если вы работаете на 10.4 или более ранней версии, ваш код все равно будет работать, но инфраструктура AudioFile вообще не будет знать о свойстве bitrate и, следовательно, скорее всего вернет ноль.

...