Como chegar taxa de bits do arquivo de áudio no cacau
-
21-08-2019 - |
Pergunta
Eu preciso para obter informações taxa de bits de arquivos de áudio, para alguma função AudioFileGetProperty razão com kAudioFilePropertyBitRate constante sempre retorna 0 para mim. O mesmo com kAudioFilePropertyInfoDictionary, o does not dicionário resultando conter informações bitrate. Gostaria de tentar obter manualy isso a partir de dados brutos em caso de mp3, mas eu preciso para apoiar diferentes formatos de arquivo, tais como m4a e outros. Existe alguma outra maneira de fazer isso?
Solução
Se você está lidando com um arquivo, você pode sempre tentar usar a API do Spotlight metadados. Por exemplo, supondo que você tem o caminho para o arquivo de áudio como um NSString ou CFStringRef chamado 'caminho':
MDItemRef item = MDItemCreate( kCFAllocatorDefault, path );
CFNumberRef audioBitrate = MDItemCopyAttribute( item, kMDItemAudioBitrate );
CFNumberRef totalBitrate = MDItemCopyAttribute( item, kMDItemTotalBitrate );
CFRelease( item );
Não é o ideal, mas pelo menos poderia fornecer-lhe mais algumas informações de fundo para sugerir por que o outro API não está funcionando.
A única outra coisa que eu posso pensar: kAudioFilePropertyBitRate só é definido no OS X 10.5. Se você estiver executando em 10.4 ou anterior, seu código ainda será executado, mas o quadro AudioFile não vai saber sobre a propriedade bitrate em tudo, e, portanto, provável retornar zero.