ios - Diferencias entre AVPlayer y MPMoviePlayerController
ios4 avfoundation (1)
NOTA a partir de iOS9, Apple ha dejado de utilizar MPMoviePlayerController:
La clase MPMoviePlayerController está desaprobada formalmente en iOS 9. (La clase MPMoviePlayerViewController también está desaprobada formalmente). Para reproducir contenido de video en iOS 9 y posterior, utilice la clase AVPictureInPictureController o AVPlayerViewController del marco AVKit o la clase WKWebView de WebKit.
Copiado de la referencia MPMoviePlayerController .
AVPlayer
le ofrece mucha más flexibilidad, pero está bastante poco documentado. El uso de esta API te obligará a crear tu propia IU. AVFoundation
(el marco que le proporciona AVPlayer
) generalmente es un poco difícil para el usuario (codificador) ya que le obliga a utilizar Key-Value Observando 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
sería, por ejemplo, su versión extendida, AVQueuePlayer
, ya que es capaz de hacer una reproducción sin interrupciones de múltiples fuentes de películas. Otra ventaja es sin duda la función de marco AVFoundation
rico que le permite hacer cosas como la composición / codificación / conversión de la película sobre la marcha.
Otra gran ventaja de AVPlayer
es el hecho de que puedes reproducir varias fuentes de video al mismo tiempo (por ejemplo, una al lado de la otra) sin ningún problema.
MPMoviePlayerController
es fácil de usar y cubre la mayoría de las necesidades 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
utiliza unas pocas NSNotifications
cubren todo lo que necesita la aplicación normal.
Bajo el capó, MPMoviePlayerController
basa en AVPlayer
, pero en realidad es totalmente transparente para el usuario, no tiene acceso a esa capa mientras usa MPMoviePlayerController
.
MPMoviePlayerController
utiliza el AVPlayer
subyacente como una instancia singleton, por lo tanto, no es posible utilizar varias instancias de MPMoviePlayerController
para reproducir videos al mismo tiempo.
Por otro lado, tan pronto como intentas extender la funcionalidad de MPMoviePlayerController
con tus propias características, el código se pone desagradable rápidamente, por ejemplo, posiblemente comiences a utilizar múltiples temporizadores para cubrir cosas como una detección de hambre adecuada (en realidad, esa función incluido en la versión iOS5 de esta clase), actualizaciones de UI personalizadas, ... O puede terminar teniendo más de un puñado de propiedades de estado tratando de cubrir cosas como abortar con gracia la reproducción mientras el reproductor todavía está pre-buffering.
Recomendación personal
He usado ambos y continuaré usando ambos, dependiendo de las necesidades de la aplicación que 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, obtienes un reproductor de medios completo. Y si sus demandas de reproducción de medios son aún más simples, MPMoviePlayerViewController
un vistazo a MPMoviePlayerViewController
(tenga en cuenta que View-part).
Estoy desarrollando una aplicación para iPhone que necesita reproducir videos. Hasta ahora, aprendí que hay al menos dos API para lograr esto; AVPlayer
y MPMoviePlayerController
.
¿Cuáles son las principales diferencias?