AVAudioPlayer - Drop in Framerate
-
06-07-2019 - |
Pergunta
Eu tenho uma pergunta rápida: Eu estou carregando um arquivo mp3 em um objeto NSData e então eu jogá-lo usando o AVAudioPlayer no meu jogo. A cada segundo ou assim, a taxa de quadros cai e você pode ver uma gagueira na tela. Não é uma grande desaceleração, mas claramente perceptível e interromper a jogabilidade. Não jogar a faixa de música com os shows AVAudioPlayer não abrandar em tudo.
Como posso evitar que isso aconteça?
Obrigado.
Florian
Solução
Para referência futura, aqui está a solução:
Como definir a categoria sessão de áudio para kAudioSessionCategory_AmbientSound (para permitir iPod música a tocar em simultâneo) de alguma forma desativa a aceleração de hardware MP3. Definir a categoria de áudio para kAudioSessionCategory_SoloAmbientSound corrige isso, mas não permite a reprodução do iPod. Eu agora definir a categoria sessão de áudio, dependendo se música de fundo é ativada ou desativada para permitir a reprodução simultânea iPod.
Outras dicas
O MP3 é um formato de áudio codificado / comprimido. Pode tentar ou para reduzir a taxa de amostragem (por istance, em vez de 128 kb / s tente de 64 kb / s) ou interruptor para um formato não codificados tais como PCM linear. Os contras são: reduzir a qualidade de áudio no primeiro caso, o tamanho do arquivo mais elevado no último. Mas isso pode ajudar a melhorar o desempenho global do seu aplicativo.