मैं एक 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।
MPMoviePlayerControllerAVPlayerएक एकल उदाहरण के रूप में अंडरलेइंग का उपयोग करता है , इसलिए MPMoviePlayerControllerसमवर्ती वीडियो चलाने के कई उदाहरणों का उपयोग करना संभव नहीं है ।
दूसरी ओर, जैसे ही आप MPMoviePlayerControllerअपनी स्वयं की विशेषताओं के साथ कार्यक्षमता बढ़ाने की कोशिश कर रहे हैं , कोड जल्दी से गंदा हो जाता है - जैसे कि आप संभवतः उचित तारों का पता लगाने जैसी चीजों को कवर करने के लिए कई टाइमर का उपयोग करना शुरू कर देंगे (वास्तव में, यह सुविधा शामिल है) iOS5 के इस वर्ग के संस्करण में), कस्टम यूआई अपडेट ... या आप एक से अधिक राज्य गुण रखने की कोशिश कर सकते हैं, जो खिलाड़ी को अभी भी प्री-बफरिंग करते हुए ग्रेसफुल एब्रोशन जैसी चीजों को कवर करने की कोशिश कर रहे हैं।
व्यक्तिगत सिफारिश
मैंने दोनों का उपयोग किया है और मैं दोनों का उपयोग करना जारी रखूंगा, ऐप की जरूरतों के आधार पर मुझे निर्माण करने की खुशी है। अधिकांश (सरल) परियोजनाओं के लिए, मैं उपयोग MPMoviePlayerControllerकरने की सलाह दूंगा AVPlayerक्योंकि यह उपयोग करने के लिए बहुत सरल है और कोड की कुछ ही पंक्तियों के साथ, आपको एक पूर्ण मीडिया प्लेयर मिलता है। और अगर मीडिया प्लेबैक पर आपकी मांग और भी सरल है, तो एक नज़र डालें MPMoviePlayerViewController(ध्यान दें कि व्यू-पार्ट)।
backgroundView।