AVAudioPlayer - Drop in Framerate
-
06-07-2019 - |
Domanda
Ho una domanda veloce: sto caricando un file mp3 in un oggetto NSData e quindi lo gioco usando AVAudioPlayer nel mio gioco. Circa ogni secondo, la frequenza dei fotogrammi diminuisce e sullo schermo è possibile notare una balbuzie. Non è un grande rallentamento, ma chiaramente evidente e sconvolgente per il gameplay. Non riprodurre la traccia musicale con AVAudioPlayer non mostra alcun rallentamento.
Come posso evitare che ciò accada?
Grazie.
Florian
Soluzione
Per riferimento futuro, ecco la soluzione:
L'impostazione della categoria della sessione audio su kAudioSessionCategory_AmbientSound (per consentire la riproduzione simultanea della musica dell'iPod) disabilita in qualche modo l'accelerazione hardware MP3. L'impostazione della categoria audio su kAudioSessionCategory_SoloAmbientSound risolve questo problema, ma non consente la riproduzione di iPod. Ora imposto la categoria della sessione audio a seconda che la musica di sottofondo sia abilitata o disabilitata per consentire la riproduzione simultanea di iPod.
Altri suggerimenti
L'mp3 è un formato audio codificato / compresso. Puoi provare a ridurre la frequenza di campionamento (ad esempio, invece di 128 kb / s prova 64 kb / s) o passare a un formato non codificato come pcm lineare. I contro sono: qualità audio inferiore nel primo caso, dimensione del file più alta nel secondo. Ma questo può aiutare a migliorare le prestazioni generali della tua app.