1) AVPlayer
będzie buforowania wideo w kilku przypadkach, żaden Cleary udokumentowane. Powiedziałbym, że możesz oczekiwać buforowania po zainicjowaniu wideo i po wymianie bieżącego elementu. Możesz obserwować currentItem.loadedTimeRanges
, aby wiedzieć, co się dzieje. Ta właściwość pokaże, które zakresy czasu wideo zostały załadowane.
Istnieje również kilka innych właściwości currentItem
, które mogą Ci pomóc: playbackLikelyToKeepUp
, playbackBufferFull
i playbackBufferEmpty
.
Osiągnięcie doskonałego odtwarzania bez przerw nie jest łatwe.
/* player is an instance of AVPlayer */
[player addObserver:self
forKeyPath:@"currentItem.loadedTimeRanges"
options:NSKeyValueObservingOptionNew
context:kTimeRangesKVO];
W observeValueForKeyPath:ofObject:change:context:
:
if (kTimeRangesKVO == context) {
NSArray *timeRanges = (NSArray *)[change objectForKey:NSKeyValueChangeNewKey];
if (timeRanges && [timeRanges count]) {
CMTimeRange timerange = [[timeRanges objectAtIndex:0] CMTimeRangeValue];
NSLog(@" . . . %.5f -> %.5f", CMTimeGetSeconds(timerange.start), CMTimeGetSeconds(CMTimeAdd(timerange.start, timerange.duration)));
}
}
2) Wystarczy pilnować player.rate
.
[player addObserver:self
forKeyPath:@"rate"
options:NSKeyValueObservingOptionNew
context:kRateDidChangeKVO];
Następnie w observeValueForKeyPath:ofObject:change:context:
:
if (kRateDidChangeKVO == context) {
NSLog(@"Player playback rate changed: %.5f", player.rate);
if (player.rate == 0.0) {
NSLog(@" . . . PAUSED (or just started)");
}
}
3) Można build a movie of a given length using a still image ale łatwiej jest użyć zwykłej UIImageView
na górze odtwarzacza. Ukryj/pokaż w razie potrzeby.
Przykładowy projekt: zachęcamy do gry z the code I wrote to support my answer.
Sprawdź AVQueuePlayer, aby odtwarzać sekwencje bez przerw. – MikeyWard
Użyłem go już, nie obsługuje on przesyłanej strumieniowo treści audio/wideo, zrobiłem to już przy użyciu AVPlayera. Dzięki –
@OmerWaqasKhan Użyj Charlesa, aby obserwować pakiet sieciowy twojej aplikacji, i widzisz, że gracz nadal wysyła żądania sieciowe, gdy zatrzymał się na – onmyway133