Gibt es eine Möglichkeit, AVPlayer dazu zu bringen, Audio in einen Puffer zu laden, so wie AVAudioPlayer es tut, wenn er zu preparetoplay aufgerufen wird? Ich versuche, die Verzögerung zu beseitigen, die entsteht, wenn ein Benutzer eine Wiedergabetaste drückt und das Audio abgespielt wird. AVAudioPlayer scheint sofortiger zu sein, aber ich muss Dateien aus der iPod-Bibliothek abspielen.
Antwort
Zu viele Anzeigen?Wenn Sie AVPlayer verwenden, um ein Lied von einer URL abzuspielen, beginnt der AVPlayer beim Aufrufen von "play", das Lied zu laden, und spielt es dann ab, wenn es fertig ist. Ich gehe davon aus, dass die gleiche Funktionalität auch bei einer lokalen Datei gegeben ist. Wenn sie von Ihrem iPod kommt, sollte die Verzögerungszeit bereits sehr gering sein.
Eine Sache, die Sie ausprobieren sollten, ist der Aufruf von Play und dann Pause. AVPlayer wird den Song weiter laden und wenn Sie Play erneut aufrufen (vorausgesetzt, es ist nicht sofort), sollte der Song ohne Probleme starten. Ich kann bestätigen, dass dies funktioniert, wenn ein Lied von einer URL abgespielt wird. Probieren Sie es für Ihr Szenario aus.
- (void) getPlayerReady {
// write some code here to setup the player
[player play];
[player pause];
}
- (IBAction) btnPlayTouched:(id)sender {
[player play];
}
EDIT: Ich sollte wohl auch erwähnen, dass AVQueuePlayer dies für dich tun wird. Wenn du AVQueuePlayer mehrere Songs gibst, wird er automatisch den nächsten Song vorpuffern, während der erste Song gespielt wird. Ich weiß nicht, ob dies etwas ist, das Sie in Ihrer Situation verwenden können oder nicht.