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?
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?
Respuestas:
NOTA a partir de iOS9, Apple ha desaprobado el MPMoviePlayerController:
Copiado de la referencia de MPMoviePlayerController .
AVPlayer
AVPlayer
le brinda mucha más flexibilidad pero está bastante mal documentado. El uso de esta API lo obligará a crear su propia interfaz de usuario.AVFoundation
(el marco que le brindaAVPlayer
) generalmente es un poco difícil para el usuario (codificador), ya que lo obliga a usar mucho la observación de valores clave para verificar estados. El concepto de KVO es genial, no me malinterpretes; aún así, para los desarrolladores sin experiencia puede ser doloroso aprenderlo. Apple a veces omite la información sobre qué propiedades son realmente compatibles con KVO y eso te obligará a experimentar un poco.Una gran ventaja de
AVPlayer
overMPMoviePlayerController
sería, por ejemplo, su versión extendida,AVQueuePlayer
ya que es capaz de reproducir sin interrupciones múltiples fuentes de películas. Sin duda, otra ventaja es elAVFoundation
marco rico en funciones que le permite hacer cosas como la composición / codificación / conversión de películas sobre la marcha.Otra gran ventaja de
AVPlayer
es el hecho de que puede reproducir múltiples fuentes de video simultáneamente (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 inmediato. El uso de esta API le brindará una interfaz de usuario atractiva y de fácil comprensión. Sin embargo, la interfaz de usuario se puede desactivar o reemplazar por una personalizada.Para cambios de estado,
MPMoviePlayerController
utiliza algunos queNSNotifications
cubren todo lo que necesita la aplicación normal.Debajo del capó, se
MPMoviePlayerController
construye sobreAVPlayer
, pero eso en realidad es completamente transparente para el usuario, no tiene acceso a esa capa mientras lo usaMPMoviePlayerController
.MPMoviePlayerController
utiliza el subyacenteAVPlayer
como una instancia única, por lo que no es posible usar varias instancias deMPMoviePlayerController
para reproducir videos al mismo tiempo.Por otro lado, tan pronto como intente extender la funcionalidad de
MPMoviePlayerController
con sus propias características, el código se vuelve desagradable rápidamente; por ejemplo, posiblemente comenzará a usar múltiples temporizadores para cubrir cosas como una detección adecuada de hambre (en realidad, esa característica se incluyó en la versión de iOS5 de esta clase), actualizaciones personalizadas de la interfaz de usuario, ... O puede terminar teniendo más de un puñado de propiedades estatales que intentan cubrir cosas como abortar elegantemente la reproducción mientras el reproductor aún está almacenando en búfer.Recomendación personal
He usado ambos y seguiré 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
overAVPlayer
ya que es muy simple de usar y con solo unas pocas líneas de código, obtienes un reproductor multimedia completo. Y si sus demandas sobre la reproducción de medios son aún más simples, eche un vistazo aMPMoviePlayerViewController
(tenga en cuenta que View-part).fuente
backgroundView
.