NOTA come di iOS9, Apple ha deprecato l'MPMoviePlayerController:
La classe MPMoviePlayerController è formalmente sconsigliato in iOS 9. (. La classe MPMoviePlayerViewController è anche formalmente sconsigliato) Per riprodurre contenuti video in iOS 9 e, successivamente, utilizzare la classe AVPictureInPictureController o AVPlayerViewController dal framework AVKit o la classe WKWebView da WebKit.
Copiato dallo MPMoviePlayerController reference.
AVPlayer
AVPlayer
ti dà una flessibilità molto di più, ma è piuttosto scarsamente documentato. L'utilizzo di questa API ti costringerà a creare la tua interfaccia utente. AVFoundation
(il framework che ti porta a AVPlayer
) in genere è un po 'difficile per l'utente (coder) in quanto ti costringe a usare molto Key-Value Observing per verificare gli stati. Il concetto di KVO è fantastico, non fraintendetemi - ancora, per gli sviluppatori inesperti può essere doloroso imparare. Apple a volte omette le informazioni su quali proprietà sono effettivamente conformi a KVO e questo ti costringerà a fare qualche esperimento.
Un grande vantaggio di AVPlayer
su MPMoviePlayerController
sarebbe ad esempio la sua versione estesa, AVQueuePlayer
in quanto è in grado di eseguire la riproduzione senza pause di più origini di film. Un altro vantaggio è sicuramente il ricco framework AVFoundation
che ti consente di fare cose come composizione/codifica/conversione di film al volo.
Un altro enorme vantaggio di AVPlayer
consiste nel fatto che si possono effettivamente riprodurre più sorgenti video contemporaneamente (ad esempio fianco a fianco) senza alcun problema.
MPMoviePlayerController
MPMoviePlayerController
è facile da usare e copre la maggior parte ha bisogno di out of the box. L'utilizzo di questa API ti fornirà un'interfaccia utente di bell'aspetto e comunemente compresa. L'interfaccia utente tuttavia può essere disattivata e sostituita con una personalizzata.
Per le modifiche di stato, MPMoviePlayerController
utilizza un numero di NSNotifications
che copre tutto ciò di cui ha bisogno l'app normale.
Sotto il cofano, MPMoviePlayerController
costruisce in cima AVPlayer
- ma che in realtà accade tutto trasparente per l'utente - non avere accesso a tale strato durante l'utilizzo MPMoviePlayerController
.
MPMoviePlayerController
utilizza l'underlaying AVPlayer
come istanza Singleton, quindi non è possibile utilizzare più istanze di MPMoviePlayerController
per riprodurre i video contemporaneamente.
D'altra parte, non appena si tenta di estendere la funzionalità di MPMoviePlayerController
con le proprie funzionalità, il codice diventa rapidamente pericoloso - ad es.probabilmente inizierai a usare timer multipli per coprire cose come un corretto rilevamento di fame (in realtà, quella funzione è stata inclusa nella versione di iOS5 di questa classe), aggiornamenti dell'interfaccia utente personalizzati, ... o potresti finire per avere più di una manciata di stati proprietà che cercano di coprire cose come abortire con garbo della riproduzione mentre il lettore è ancora pre-buffering.
raccomandazione personale
Ho usato entrambi e continuerò a usare entrambi, a seconda delle esigenze di App ho il piacere di costruire. Per la maggior parte dei (semplici) progetti, consiglierei di utilizzare MPMoviePlayerController
su AVPlayer
poiché è molto semplice da utilizzare e con poche righe di codice, si ottiene un lettore multimediale completo. E se le tue esigenze di riproduzione multimediale sono ancora più semplici, dai uno sguardo a MPMoviePlayerViewController
(nota come View-part).
Ho provato a riformulare questa domanda per assicurarmi che non stia generando risposte basate sull'opinione pubblica. – Till