Ho avuto un problema simile di recente. La soluzione sembrava un po 'hacky ma ha funzionato fino a quando ho visto. Innanzitutto ho impostato un osservatore per le nuove notifiche del registro di accesso:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleAVPlayerAccess:)
name:AVPlayerItemNewAccessLogEntryNotification
object:nil];
Quale chiama questa funzione. Probabilmente può essere ottimizzato ma qui è l'idea di base:
- (void)handleAVPlayerAccess:(NSNotification *)notif {
AVPlayerItemAccessLog *accessLog = [((AVPlayerItem *)notif.object) accessLog];
AVPlayerItemAccessLogEvent *lastEvent = accessLog.events.lastObject;
float lastEventNumber = lastEvent.indicatedBitrate;
if (lastEventNumber != self.lastBitRate) {
//Here is where you can increment a variable to keep track of the number of times you switch your bit rate.
NSLog(@"Switch indicatedBitrate from: %f to: %f", self.lastBitRate, lastEventNumber);
self.lastBitRate = lastEventNumber;
}
}
Ogni volta che c'è una nuova voce nel log di accesso, verifica l'ultimo bitrate indicato dalla voce più recente (la LastObject nel log di accesso per l'elemento giocatore). Confronta questo bitrate indicato con una proprietà che memorizzava il bitrate da quell'ultima modifica.
Ha fatto il trucco! Grazie: D – tcacciatore