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:
Disalin dari referensi MPMoviePlayerController .
AVPlayer
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 AndaAVPlayer
) 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
overMPMoviePlayerController
misalnya adalah versi yang diperpanjang,AVQueuePlayer
karena versi tersebut dapat melakukan pemutaran tanpa jeda dari berbagai sumber film. Keuntungan lain tentu saja adalahAVFoundation
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
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 yangNSNotifications
mencakup semua kebutuhan Aplikasi biasa.Di balik terpal,
MPMoviePlayerController
dibangun di atasAVPlayer
- tetapi itu benar-benar terjadi sepenuhnya transparan bagi pengguna - Anda tidak memiliki akses ke lapisan itu saat menggunakanMPMoviePlayerController
.MPMoviePlayerController
menggunakan underlayingAVPlayer
sebagai instance tunggal, oleh karena itu tidak mungkin menggunakan beberapa instanceMPMoviePlayerController
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
overAVPlayer
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, lihatlahMPMoviePlayerViewController
(perhatikan bahwa View-part).sumber
backgroundView
.