Saya sedang mengembangkan aplikasi iPhone yang perlu memutar video. Sejauh ini, saya mengetahui bahwa setidaknya ada dua API untuk mencapai ini; AVPlayer
dan MPMoviePlayerController
.
Apa perbedaan utamanya?
Saya sedang mengembangkan aplikasi iPhone yang perlu memutar video. Sejauh ini, saya mengetahui bahwa setidaknya ada dua API untuk mencapai ini; AVPlayer
dan MPMoviePlayerController
.
Apa perbedaan utamanya?
Jawaban:
CATATAN pada iOS9, Apple telah menghentikan MPMoviePlayerController:
Kelas MPMoviePlayerController secara resmi tidak digunakan lagi di iOS 9. (Kelas MPMoviePlayerViewController juga secara resmi tidak digunakan lagi.) Untuk memutar konten video di iOS 9 dan yang lebih baru, gunakan kelas AVPictureInPictureController atau AVPlayerViewController dari kerangka kerja AVKit, atau kelas WKWebView dari WebKit.
Disalin dari referensi MPMoviePlayerController .
AVPlayer
memberi Anda lebih banyak fleksibilitas tetapi kurang terdokumentasi dengan baik. Menggunakan API ini akan memaksa Anda untuk membuat UI Anda sendiri. AVFoundation
(kerangka kerja yang membawa Anda AVPlayer
) umumnya agak sulit bagi pengguna (pembuat kode) karena memaksa Anda untuk menggunakan Pengamatan Nilai-Kunci untuk memeriksa status. Konsep KVO sangat bagus, jangan salah paham - tetap saja, untuk developer yang tidak berpengalaman bisa jadi menyakitkan untuk mempelajarinya. Apple terkadang menghilangkan informasi tentang properti mana yang benar-benar sesuai dengan KVO dan yang akan memaksa Anda untuk melakukan beberapa eksperimen.
Salah satu keuntungan besar dari AVPlayer
over MPMoviePlayerController
misalnya adalah versi yang diperpanjang, AVQueuePlayer
karena versi tersebut dapat melakukan pemutaran tanpa jeda dari berbagai sumber film. Keuntungan lain tentu saja adalah AVFoundation
kerangka kaya fitur yang memungkinkan Anda melakukan hal-hal seperti komposisi / encoding / konversi film secara on-the-fly.
Namun keuntungan besar lainnya AVPlayer
adalah kenyataan bahwa Anda sebenarnya dapat memutar berbagai sumber video secara bersamaan (misalnya berdampingan) tanpa masalah.
MPMoviePlayerController
mudah digunakan dan memenuhi sebagian besar kebutuhan di luar kotak. Menggunakan API ini akan memberi Anda tampilan yang bagus dan umum dipahami. Namun UI dapat dinonaktifkan dan atau diganti dengan yang khusus.
Untuk perubahan status, MPMoviePlayerController
gunakan beberapa yang NSNotifications
mencakup semua kebutuhan Aplikasi biasa.
Di balik terpal, MPMoviePlayerController
dibangun di atas AVPlayer
- tetapi itu benar-benar terjadi sepenuhnya transparan bagi pengguna - Anda tidak memiliki akses ke lapisan itu saat menggunakan MPMoviePlayerController
.
MPMoviePlayerController
menggunakan underlaying AVPlayer
sebagai instance tunggal, oleh karena itu tidak mungkin menggunakan beberapa instance MPMoviePlayerController
untuk memutar video secara bersamaan.
Di sisi lain, segera setelah Anda mencoba untuk memperluas fungsionalitas MPMoviePlayerController
dengan fitur Anda sendiri, kode dengan cepat menjadi buruk - misalnya Anda mungkin akan mulai menggunakan beberapa timer untuk menutupi hal-hal seperti deteksi kelaparan yang tepat (sebenarnya, fitur itu disertakan ke versi iOS5 dari kelas ini), pembaruan UI khusus, ... Atau Anda mungkin akan memiliki lebih dari segelintir properti status yang mencoba menutupi hal-hal seperti membatalkan pemutaran dengan anggun saat pemutar masih melakukan pra-buffering.
Rekomendasi Pribadi
Saya telah menggunakan keduanya dan saya akan terus menggunakan keduanya, tergantung pada kebutuhan Aplikasi yang ingin saya bangun. Untuk sebagian besar proyek (sederhana), saya akan merekomendasikan penggunaan MPMoviePlayerController
over AVPlayer
karena sangat mudah digunakan dan hanya dengan beberapa baris kode, Anda mendapatkan pemutar media yang lengkap. Dan jika tuntutan Anda pada pemutaran media bahkan lebih sederhana, lihatlah MPMoviePlayerViewController
(perhatikan bahwa View-part).
backgroundView
.