Lanzamiento de AVPlayer: "Error interno: reinicio demasiado adelantado"

Estoy observando KVO AVPlayerItemNewErrorLogEntryNotification del AVPlayer y encuentro el siguiente error:

  • errorStatusCode: -12645 errorDomain: Error de CoreMediaErrorDomainComment: Error interno: reinicio demasiado adelante (-1.4084s)

No puedo entender lo que realmente significa la siguiente línea.

"Error interno: reiniciar demasiado lejos"

¿Alguien puede ayudarme a encontrar la causa raíz de este problema?

De acuerdo con un empleado de Apple, este post de error significa que:

El jugador se queja de que estaba intentando reiniciar una transmisión en vivo, pero solo tenía 1.4 segundos de material disponible. ¿Cuántos segmentos hay en tu list de reproducción en vivo? En estos días, le recomendamos que siempre tenga al less seis segmentos en la list de reproducción. Creo que el único efecto es retrasar palyback hasta que tenga suficientes datos.

Fuente: https://forums.developer.apple.com/thread/40791


La causa del error probablemente se origina en el propio m3u8.

Cuando se transmite un progtwig en vivo (por ejemplo, cualquier canal de TV) hay un retraso entre la disponibilidad de los datos del evento y el codificador que crea segmentos de medios (.ts) que luego se agregan a la list de reproducción.

Podría imaginar que estos types de errores se generan si la position del cabezal de reproducción playerItem está al borde del búfer y los nuevos segmentos de medios no están disponibles lo suficientemente rápido en el server.


En caso de que estos errores se eviten o se manejen en el lado del cliente:

Dado que estos errores se informan como internal y AVPlayer aparentemente se recupera de él, es seguro asumir que se están manejando internamente. Por lo tanto, podrían entenderse como simples informes de errores y uno podría elegir ignorarlos.

Si uno quisiera evitarlos, la única forma de hacerlo sería configurar manualmente el borde del búfer en vivo en el time unos segundos.

Si es un file largo de video con: -12645.

No hay documentation para los códigos de estado de error devueltos por MPMediaPlayer en la class MPMovieErrorLogEvent. Pero algunos de ellos son:

 HTTP status - errorStatusCode - errorDomain - errorComment 400 -12666 CoreMediaErrorDomain unrecognized http response 400 401 -12937 CoreMediaErrorDomain Authentication Error 402 -12666 CoreMediaErrorDomain unrecognized http response 402 403 -12660 CoreMediaErrorDomain HTTP 403: Forbidden 404 -12938 CoreMediaErrorDomain HTTP 404: File not found 405 -12666 CoreMediaErrorDomain unrecognized http response 405 406 -12666 CoreMediaErrorDomain unrecognized http response 406 407 -12937 CoreMediaErrorDomain Authentication Error 409 -12666 CoreMediaErrorDomain unrecognized http response 409 ... 415 -12666 CoreMediaErrorDomain unrecognized http response 415 500 -12666 CoreMediaErrorDomain unrecognized http response 500 501 -12666 CoreMediaErrorDomain unrecognized http response 501 502 -12666 CoreMediaErrorDomain unrecognized http response 502 503 -12661 CoreMediaErrorDomain HTTP 503: Unavailable 504 -12666 CoreMediaErrorDomain unrecognized http response 504 505 -12666 CoreMediaErrorDomain unrecognized http response 505 if long .ts video file respons -12645 CoreMediaErrorDomain No response for media file in 10 s video .ts file bitrate differ from m3u8 declaration -12318 CoreMediaErrorDomain Segment exceeds specified bandwidth for variant for live stream.playlist m3u8 did not change too long -12642 CoreMediaErrorDomain Playlist File unchanged for 2 consecutive reads if wrong host ip -1004 kCFErrorDomainCFNetwork - if wrong dns host name -1003 kCFErrorDomainCFNetwork - if bad formatted URL -1000 kCFErrorDomainCFNetwork - if invalid https/ssl request -1202 kCFErrorDomainCFNetwork -