ios ios4 mpmovieplayercontroller avfoundation avplayer

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

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

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?