J'essaie de faire des retards entre AVPlayerItems, mais je ne comprends pas comment faire cela. J'ai besoin de jouer des sons en arrière-plan (lorsque l'application iOS en arrière-plan) avec des retards entre ces sons. Mais AVQueuePlayer ne prend pas en charge cette fonctionnalité. Lorsque j'essaie de mettre le son en pause après la fin, le son suivant ne veut pas jouer. Cependant, au premier plan, cet algorithme fonctionne bien.Comment faire des retards entre AVPlayerItems dans AVQueuePlayer en tâche de fond?
C'est code, qui en cours d'exécution en tâche de fond:
AVQueuePlayer *player = [[AVQueuePlayer alloc] initWithItems: items];
[player play];
NSUInteger currentIndex = 0;
AVPlayerItem *lastItem = nil;
while(currentIndex < items.count && self.enabled) {
AVPlayerItem *currentItem = [player currentItem];
while(currentItem == lastItem || currentItem == nil) {
[NSThread sleepForTimeInterval:0.2f];
currentItem = [player currentItem];
}
while(currentItem.status != AVPlayerItemStatusReadyToPlay) {
[NSThread sleepForTimeInterval:0.2f];
NSLog(@"Loading...");
}
lastItem = currentItem;
CGFloat time = 0.0f;
CGFloat duration = 0.0f;
while(duration < 0.5f) {
[NSThread sleepForTimeInterval: 0.5f];
if(currentItem.duration.timescale > 0)
duration = (double) currentItem.duration.value/(double) currentItem.duration.timescale;
}
while(time < duration - 0.1f) {
[NSThread sleepForTimeInterval: 0.08f];
time = (double) currentItem.currentTime.value/(double) currentItem.currentTime.timescale;
}
[player pause];
CGFloat delay = someDelayBetweenSounds;
[NSThread sleepForTimeInterval: delay];
[player play];
currentIndex++;
}
Mon anglais est très mauvais, donc je me excuse
Ne fonctionne pas. Quand je règle le taux à 0, il cesse de jouer. D'accord. Mais si j'essaye de mettre le taux du joueur à 1 après cela, il ne joue plus jamais. – chudin26
Utilisez-vous un AVQueuePlayer? Vous devez d'abord vous assurer que vous avez un autre fichier en file d'attente. – Oren
J'ai plusieurs éléments dans AVQueuePlayer. Est-ce que tu voulais dire ça? – chudin26