Videoları oynatması gereken bir iPhone uygulaması geliştiriyorum. Şimdiye kadar bunu başarmak için en az iki API olduğunu öğrendim; AVPlayer
ve MPMoviePlayerController
.
Ana farklar nelerdir?
Videoları oynatması gereken bir iPhone uygulaması geliştiriyorum. Şimdiye kadar bunu başarmak için en az iki API olduğunu öğrendim; AVPlayer
ve MPMoviePlayerController
.
Ana farklar nelerdir?
Yanıtlar:
NOT iOS9 itibariyle, Apple MPMoviePlayerController'ı kullanımdan kaldırmıştır:
MPMoviePlayerController sınıfı resmi olarak iOS 9'da kullanımdan kaldırılmıştır. (MPMoviePlayerViewController sınıfı da resmi olarak kullanımdan kaldırılmıştır.) İOS 9 ve sonraki sürümlerde video içeriğini oynatmak için bunun yerine AVKit çerçevesinden AVPictureInPictureController veya AVPlayerViewController sınıfını veya WebKit .WebView sınıfını kullanın.
MPMoviePlayerController referansından kopyalandı .
AVPlayer
size çok daha fazla esneklik sağlar, ancak yeterince belgelenmemiştir. Bu API'yi kullanmak sizi kendi kullanıcı arayüzünüzü oluşturmaya zorlar. AVFoundation
(sizi getiren çerçeve AVPlayer
) genel olarak kullanıcı (kodlayıcı) için biraz zordur çünkü sizi durumları kontrol etmek için Key-Value Observing'i çok kullanmaya zorlar . KVO kavramı harika, beni yanlış anlamayın - yine de deneyimsiz geliştiriciler için öğrenmek acı verici olabilir. Apple bazen hangi özelliklerin gerçekte KVO uyumlu olduğu hakkındaki bilgileri atlar ve bu sizi bazı deneyler yapmaya zorlar.
Bir büyük avantajı AVPlayer
over MPMoviePlayerController
örneğin, onun genişletilmiş versiyonu olacağını AVQueuePlayer
bu bir çoklu film kaynaklarının oynatma boşluksuz yapmak mümkün olduğu gibi. Diğer bir avantaj, AVFoundation
anında film oluşturma / kodlama / dönüştürme gibi şeyler yapmanıza olanak tanıyan zengin özellikli çerçevedir.
Bunun bir başka büyük avantajı da AVPlayer
birden fazla video kaynağını aynı anda (örneğin yan yana) sorunsuz bir şekilde oynatabilmenizdir.
MPMoviePlayerController
kullanımı kolaydır ve çoğu ihtiyacı kutudan çıkarır. Bu API'yi kullanmak size iyi görünümlü ve genel olarak anlaşılan bir kullanıcı arayüzü sağlayacaktır. Ancak kullanıcı arayüzü devre dışı bırakılabilir veya özel bir tanesiyle değiştirilebilir.
Durum değişiklikleri için, normal Uygulamanın ihtiyaç duyduğu her şeyi kapsayan MPMoviePlayerController
birkaç tane kullanır NSNotifications
.
Kaputun altında, MPMoviePlayerController
üstüne inşa edilir AVPlayer
- ama bu aslında kullanıcıya tamamen şeffaftır - kullanırken o katmana erişiminiz yoktur MPMoviePlayerController
.
MPMoviePlayerController
altlığı AVPlayer
tek bir örnek olarak kullanır , bu nedenle MPMoviePlayerController
videoları eşzamanlı olarak oynatmak için birden fazla örnek kullanmak mümkün değildir .
Öte yandan, işlevselliğini MPMoviePlayerController
kendi özelliklerinizle genişletmeye çalıştığınız anda , kod hızla çirkinleşir - örneğin, uygun bir açlık tespiti gibi şeyleri örtmek için muhtemelen birden fazla zamanlayıcı kullanmaya başlayacaksınız (aslında, bu özellik dahil edilmiştir. iOS5'in bu sınıfın sürümüne), özel kullanıcı arayüzü güncellemeleri, ... Veya oynatıcı hala ön arabelleğe alırken oynatmayı zarif bir şekilde iptal etmek gibi şeyleri kapsamaya çalışan bir avuç durum özelliğine sahip olabilirsiniz.
Kişisel Öneri
Yapmaktan zevk aldığım Uygulamanın ihtiyaçlarına bağlı olarak ikisini de kullandım ve her ikisini de kullanmaya devam edeceğim. Çoğu (basit) proje için, kullanımı çok basit olduğundan ve yalnızca birkaç satır kodla tam teşekküllü bir medya oynatıcıya sahip olduğunuz için MPMoviePlayerController
over kullanmanızı tavsiye ederim AVPlayer
. Ve eğer medya oynatma konusundaki talepleriniz daha da basitse, bir göz atın MPMoviePlayerViewController
(View- part'a dikkat edin).
backgroundView
.