NOTA como de iOS9, Apple ha desaprobado la MPMoviePlayerController:
La clase MPMoviePlayerController se cancele formalmente en IOS 9. (. La clase MPMoviePlayerViewController también se cancele formalmente) para reproducir contenido de vídeo en IOS 9 y luego, en su lugar, utilice la clase AVPictureInPictureController o AVPlayerViewController del marco AVKit o la clase WKWebView de WebKit.
Copiado desde MPMoviePlayerController reference.
AVPlayer
AVPlayer
le da mucha más flexibilidad, pero es bastante poco documentada. El uso de esta API te obligará a crear tu propia IU. AVFoundation
(el marco que le trae AVPlayer
) generalmente es un poco difícil para el usuario (codificador) ya que le obliga a usar Key-Value Observing mucho para verificar estados. El concepto de KVO es genial, no me malinterpreten, aún así, para los desarrolladores inexpertos puede ser doloroso aprender. Apple a veces omite la información sobre qué propiedades son realmente compatibles con KVO y eso lo forzará a hacer algo de experimentación.
Una gran ventaja de AVPlayer
sobre MPMoviePlayerController
podría ser, por ejemplo su versión extendida, como AVQueuePlayer
que uno es capaz de hacer reproducción sin interrupciones de múltiples fuentes de películas. Otra ventaja es sin duda la característica de AVFoundation
marco que le permite hacer cosas como la composición de la película sobre la marcha/codificación/conversión.
Otra gran ventaja de AVPlayer
es el hecho de que puede reproducir múltiples fuentes de video al mismo tiempo (por ejemplo, una al lado de la otra) sin ningún problema.
MPMoviePlayerController
MPMoviePlayerController
es fácil de usar y cubre las necesidades más sacarlo de la caja. El uso de esta API le proporcionará una interfaz de usuario atractiva y comúnmente comprendida. Sin embargo, la IU se puede inhabilitar y/o reemplazar por una personalizada.
Para cambios de estado, MPMoviePlayerController
usa unos pocos NSNotifications
que cubren todo lo que la aplicación normal necesita.
Bajo el capó, MPMoviePlayerController
construye en la parte superior de AVPlayer
- pero que realmente sucede totalmente transparente para el usuario - usted no tiene acceso a esa capa durante el uso de MPMoviePlayerController
.
MPMoviePlayerController
utiliza la subposición AVPlayer
como una instancia de singleton, por lo tanto, no es posible utilizar varias instancias de MPMoviePlayerController
para reproducir videos al mismo tiempo.
Por otro lado, tan pronto como intente ampliar la funcionalidad de MPMoviePlayerController
con sus propias características, el código se volverá desagradable rápidamente, p.posiblemente comiences a usar múltiples temporizadores para cubrir cosas como una detección de hambre adecuada (en realidad, esa característica se incluyó en la versión de iOS5 de esta clase), actualizaciones de UI personalizadas, ... O puedes terminar teniendo más que un puñado de estados propiedades que tratan de cubrir cosas como abortar con gracia la reproducción mientras el reproductor todavía está pre-buffering.
Recomendación Personal
he utilizado tanto y voy a seguir utilizando ambos, dependiendo de las necesidades de la aplicación Me tengo el placer de construir. Para la mayoría de los proyectos (simples), recomendaría usar MPMoviePlayerController
sobre AVPlayer
, ya que es muy simple de usar y con solo unas pocas líneas de código, obtiene un reproductor de medios completo. Y si sus demandas de reproducción de medios son aún más simples, eche un vistazo a MPMoviePlayerViewController
(tenga en cuenta esa parte de la vista).
Traté de volver a formular esta pregunta para asegurarme de que no está generando respuestas basadas en opiniones. – Till