Вопрос

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

Это было полезно?

Решение

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

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 вообще не будет знать о свойстве битрейта и, следовательно, скорее всего, вернет ноль.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top