1) AVPlayer
se amortiguar el video en varios casos, ninguno Cleary documentado. Diría que puede esperar almacenamiento en búfer cuando inicie el video y cuando reemplace el elemento actual. Puede observar currentItem.loadedTimeRanges
para saber qué está pasando. Esa propiedad le indicará qué rangos de tiempo de video se han cargado.
Además, hay algunas otras propiedades de currentItem
que pueden ayudarle: playbackLikelyToKeepUp
, playbackBufferFull
y playbackBufferEmpty
.
Lograr una reproducción perfecta sin gapless no es fácil.
/* player is an instance of AVPlayer */
[player addObserver:self
forKeyPath:@"currentItem.loadedTimeRanges"
options:NSKeyValueObservingOptionNew
context:kTimeRangesKVO];
En 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) Sólo mantener un ojo en player.rate
.
[player addObserver:self
forKeyPath:@"rate"
options:NSKeyValueObservingOptionNew
context:kRateDidChangeKVO];
Luego, en su 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) Puede build a movie of a given length using a still image pero es más fácil de usar un habitual UIImageView
en la parte superior del reproductor. Ocultar/mostrar cuando sea necesario.
Proyecto de ejemplo: dude en jugar con the code I wrote to support my answer.
Eche un vistazo a AVQueuePlayer para la reproducción secuencial sin espacios múltiples. – MikeyWard
Utilizado ya, no maneja el contenido de audio/video transmitido, lo he hecho ya usando AVPlayer. Gracias –
@OmerWaqasKhan Use Charles para observar el paquete de red de su aplicación, y puede ver que ese jugador aún envía solicitudes de red cuando está en pausa – onmyway133