Ich hatte in letzter Zeit ein ähnliches Problem. Die Lösung fühlte sich ein bisschen hacky an, aber es funktionierte soweit ich sah. Zuerst richte ich einen Beobachter für neue Access Log-Benachrichtigungen ein:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleAVPlayerAccess:)
name:AVPlayerItemNewAccessLogEntryNotification
object:nil];
Welches ruft diese Funktion auf. Es kann wahrscheinlich optimiert werden, aber hier ist die Grundidee:
- (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;
}
}
Jedes Mal gibt es an das Zugriffsprotokoll einen neuer Eintrag vorhanden ist, überprüft er die letzte angegebene Bitrate aus dem jüngsten Eintrag (der lastObject im Zugriffsprotokoll der Spieler Artikel). Es vergleicht diese angezeigte Bitrate mit einer Eigenschaft, die die Bitrate von dieser letzten Änderung gespeichert hat.
Hat den Trick gemacht! Danke: D – tcacciatore