2011-02-03 2 views
0

J'ai besoin de jouer des sons (~ 5 secondes chacun) dans l'application iPhone. Quand ils sont déclenchés, ils doivent jouer immédiatement. Pour le moment j'utilise AudioServices et (comme vous le savez probablement) la première fois que vous jouez un son, il retarde, puis chaque fois qu'il est parfait. Y a-t-il du code disponible assez intelligent pour précharger un son AudioServices (en le jouant peut-être en silence?). J'ai lu que l'ajustement du volume du système entraînera le rejet de votre application, ce qui n'est pas une option. Semble AudioServices n'est pas faite pour la correction de volume de ce que je peux voir. J'ai regardé dans OpenAL et bien que faisable semble un peu trop tuer. AVAudioPlayer semble être un peu une meilleure option, je l'utilise pour la musique de fond à l'heure actuelle. Étendre mon lecteur de musique pour gérer une «carte son» pourrait être mon dernier recours.AudioServices (Facile), AVAudioPlayer (Medium), OpenAL (Hard & Overkill?)

Sur le sujet d'OpenAL, est-ce que quelqu'un connaît un endroit avec un wrapper OpenAL décent (app store amical) pour l'iPhone?

Merci à l'avance

Répondre

1

Finch pourrait être parfait pour vous. C'est une petite enveloppe autour d'OpenAL avec une latence très faible et une API simple. Voir aussi tous SO questions tagged ‘Finch’.

+0

Finch est parfait, merci beaucoup! – Timbo

1

Si vous utilisez un AVAudioPlayer, vous pouvez appeler prepareToPlay lorsque vous initialisez l'objet de réduire le délai entre l'appel play et ayant le début audio.

+0

Lors de la dernière vérification, il restait environ 20 ms de latence même après l'appel de 'prepareToPlay'. Si l'affiche peut vivre avec cela, c'est probablement la solution parfaite. – zoul