मैं एक iPhone एप्लिकेशन विकसित कर रहा हूं जिसे वीडियो चलाने की आवश्यकता है। अब तक, मुझे पता चला कि इसे प्राप्त करने के लिए कम से कम दो एपीआई हैं; AVPlayer
और MPMoviePlayerController
।
मुख्य अंतर क्या हैं?
मैं एक iPhone एप्लिकेशन विकसित कर रहा हूं जिसे वीडियो चलाने की आवश्यकता है। अब तक, मुझे पता चला कि इसे प्राप्त करने के लिए कम से कम दो एपीआई हैं; AVPlayer
और MPMoviePlayerController
।
मुख्य अंतर क्या हैं?
जवाबों:
IOS9 के रूप में ध्यान दें , Apple ने MPMoviePlayerController को हटा दिया है:
MPMoviePlayerController वर्ग iOS 9 में औपचारिक रूप से पदावनत है (MPMoviePlayerViewController वर्ग भी औपचारिक रूप से पदावनत है।) iOS 9 में और बाद में वीडियो सामग्री खेलने के लिए, AVKit ढांचे या AVKit ढांचे से AVPictureInPictureController या AVPlayerViewController वर्ग का उपयोग करें।
MPMoviePlayerController संदर्भ से कॉपी किया गया ।
AVPlayer
आपको बहुत अधिक लचीलापन देता है लेकिन बहुत खराब रूप से प्रलेखित है। इस API का उपयोग करने से आप अपना खुद का UI बना सकते हैं। AVFoundation
(फ्रेमवर्क जो आपको लाता है AVPlayer
) आम तौर पर उपयोगकर्ता (कोडर) पर थोड़ा कठिन होता है क्योंकि यह आपको कुंजी-मूल्य का उपयोग करने के लिए जाँच करने वाले राज्यों के लिए बहुत कुछ करने के लिए मजबूर करता है। KVO की अवधारणा महान है, मुझे गलत मत समझिए - फिर भी, अनुभवहीन डेवलपर्स के लिए यह सीखना दर्दनाक हो सकता है। Apple कभी-कभी इस जानकारी को छोड़ देता है कि कौन से गुण वास्तव में KVO के अनुरूप हैं और यह आपको कुछ प्रयोग करने के लिए मजबूर करेगा।
उदाहरण के लिए AVPlayer
ओवर का एक बड़ा फायदा MPMoviePlayerController
इसका विस्तारित संस्करण होगा, AVQueuePlayer
क्योंकि यह कई मूवी स्रोतों के गैपलेस प्लेबैक करने में सक्षम है। एक और लाभ निश्चित रूप से सुविधा संपन्न AVFoundation
फ्रेमवर्क है जो आपको ऑन-द-फ्लाई मूवी कम्पोज़िशन / एन्कोडिंग / कन्वर्सेशन जैसी चीजें करने की अनुमति देता है।
फिर भी एक और बड़ा फायदा AVPlayer
यह है कि आप वास्तव में बिना किसी समस्या के कई वीडियो स्रोत समवर्ती (जैसे अगल-बगल) खेल सकते हैं।
MPMoviePlayerController
उपयोग करने में आसान है और अधिकांश आवश्यकताओं को कवर करता है। इस API का उपयोग करने से आपको एक अच्छा दिखने वाला और आमतौर पर समझा जाने वाला UI मिलेगा। यूआई को हालांकि अक्षम किया जा सकता है और एक कस्टम के साथ बदल दिया जा सकता है।
स्थिति में बदलाव के लिए, नियमित ऐप की जरूरत की हर चीज को कवर करने के लिए कुछ MPMoviePlayerController
का उपयोग करता है NSNotifications
।
हुड के तहत, MPMoviePlayerController
शीर्ष पर बनाता है AVPlayer
- लेकिन यह वास्तव में उपयोगकर्ता के लिए पूरी तरह से पारदर्शी होता है - उपयोग करते समय आपके पास उस परत तक कोई पहुंच नहीं होती है MPMoviePlayerController
।
MPMoviePlayerController
AVPlayer
एक एकल उदाहरण के रूप में अंडरलेइंग का उपयोग करता है , इसलिए MPMoviePlayerController
समवर्ती वीडियो चलाने के कई उदाहरणों का उपयोग करना संभव नहीं है ।
दूसरी ओर, जैसे ही आप MPMoviePlayerController
अपनी स्वयं की विशेषताओं के साथ कार्यक्षमता बढ़ाने की कोशिश कर रहे हैं , कोड जल्दी से गंदा हो जाता है - जैसे कि आप संभवतः उचित तारों का पता लगाने जैसी चीजों को कवर करने के लिए कई टाइमर का उपयोग करना शुरू कर देंगे (वास्तव में, यह सुविधा शामिल है) iOS5 के इस वर्ग के संस्करण में), कस्टम यूआई अपडेट ... या आप एक से अधिक राज्य गुण रखने की कोशिश कर सकते हैं, जो खिलाड़ी को अभी भी प्री-बफरिंग करते हुए ग्रेसफुल एब्रोशन जैसी चीजों को कवर करने की कोशिश कर रहे हैं।
व्यक्तिगत सिफारिश
मैंने दोनों का उपयोग किया है और मैं दोनों का उपयोग करना जारी रखूंगा, ऐप की जरूरतों के आधार पर मुझे निर्माण करने की खुशी है। अधिकांश (सरल) परियोजनाओं के लिए, मैं उपयोग MPMoviePlayerController
करने की सलाह दूंगा AVPlayer
क्योंकि यह उपयोग करने के लिए बहुत सरल है और कोड की कुछ ही पंक्तियों के साथ, आपको एक पूर्ण मीडिया प्लेयर मिलता है। और अगर मीडिया प्लेबैक पर आपकी मांग और भी सरल है, तो एक नज़र डालें MPMoviePlayerViewController
(ध्यान दें कि व्यू-पार्ट)।
backgroundView
।