El video que se juega con AVPlayer tiene una línea gris en la parte superior y los lados en iPhone 6S Plus

Esto parece ser un error específico del dispositivo solo en iPhone 6S Plus .

Pasos:

  1. Descargue el código de muestra demo de AVPlayer
  2. Ajuste AVPlayerDemoPlaybackView.xib para que MPlayback View tenga márgenes a su alnetworkingedor.
  3. Hacer que el contenido se vea de color blanco

Aparecerán líneas grises de 1px en la parte superior y en los laterales.

¿Alguien sabe cómo solucionarlo?

He intentado poner una vista opaca que oscurezca la parte superior, ¡sin embargo, la línea seguirá apareciendo SOBRE la vista opaca!

Configurar la propiedad shouldRasterize 's shouldRasterize en true hace que los bordes desaparezcan.

Mi sugerencia sería que, dado que su caso de uso es un ciclo animado para deshacerse de AVPlayer y usar UIImageView.

UIImage tiene image animatedImage(with:duration:) donde puedes ingresar una matriz de imágenes y animarlas como quieras.

Creo que esto resolvería tu problema. En mi experiencia, AVPlayer ha sido un poco valiente con iOS 10. Creo que, dado que solo estás viendo este problema en 6s + y 7s +, es una testing de que tiene algunos problemas.

Si está absolutamente comprometido a averiguar el AVPlayer, primero envíe un informe de error a Apple. Entonces tal vez intente agregar un UIImageView detrás de su AVPlayer que tenga la image configurada en un marco en blanco de su video. Esta es una especie de solución hacky, pero podría funcionar. Además, echa un vistazo a esta publicación de desbordamiento de stack. Podría arrojar algo de luz sobre los problemas que está teniendo con AVPlayer.

La mejor de las suertes.

Probé la respuesta de Nate4436271 y funcionó para mí, es decir, tuve el mismo problema y me deshice de las líneas grises, pero al establecer la propiedad shouldRasterize en true, mi video perdió calidad de image. Por lo tanto, configuré el videoGravity de my playerLayer en AVLayerVideoGravityResizeAspectFill y me deshice de las líneas, manteniendo la calidad de image 🙂

Esto es lo que hice:

 playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 

AspectFill estaba dentro de mis necesidades y resolvió el problema. Es posible que desee evaluar si otras opciones son mejores para lo que necesita, como AspectFit o Cambiar el tamaño.

Espero que esto ayude 🙂