2012-01-12 17 views
5

वेबव्यू के अंदर एक वीडियो चलाते समय और उपकरणों को देखते समय - मुझे खेलने के दौरान मेमोरी उपयोग की उच्च चोटी दिखाई देती है। (कुल में लगभग 23 एमबी)वेबव्यू और मेमोरी खपत में सरल वीडियो

जैसा कि मैंने दृश्य छोड़ दिया है (यह एक यूएनविगेशन दृश्य में है) सभी मेमोरी को इसे साफ़ कर दिया जाना चाहिए। (एआरसी का उपयोग करके)

महत्वपूर्ण: मैं वीडियो को डिस्क से लोड कर रहा हूं और इसे सर्वर से लोड नहीं कर रहा हूं!

प्रश्न: क्या वीडियो चलाने के दौरान स्मृति को कम करने का कोई तरीका है?

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 
// 

NSURLRequest *request = [[NSURLRequest alloc] initWithURL: videoURL cachePolicy: NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval: 10.0]; 
[webView loadRequest: request]; 
[webView setOpaque:NO]; 

enter image description here

+0

वीडियो फ़ाइल कितनी बड़ी है? आप किस कोडेक का उपयोग कर रहे हैं? – Luke

+0

एमपी 4 प्रारूप, अलग-अलग कोडेक्स (प्रत्येक बार एक अलग वीडियो लोड होता है, इस प्रकार कोडेक बदल सकता है), आकार 4 एमबी से 20 एमबी प्रति वीडियो फ़ाइल – chewy

उत्तर

1

अपने कोड से मुझे लगता है कि आप एक ही समय में यह किसी भी अन्य HTML सामग्री प्रदर्शित किए बिना, एक वीडियो प्लेयर के रूप में एक UIWebView उपयोग करने के लिए कोशिश कर रहे हैं।

हालांकि यह काफी संभव है, जैसा कि आपने देखा है, विशेष रूप से कुशल नहीं है - UIWebView इसकी सभी सामग्री को स्मृति में लोड करेगा क्योंकि यह वेब पृष्ठों को प्रदर्शित करने के लिए बनाया गया था।

ऐप्पल के MediaPlayer ढांचे का उपयोग करने के लिए एक बेहतर समाधान होगा, अर्थात् MPMoviePlayerController और/या MPMoviePlayerViewController

यदि आपको केवल पूर्णस्क्रीन वीडियो प्लेबैक करने की आवश्यकता है, तो आपको MPMoviePlayerViewController का उपयोग करना चाहिए। इसका उपयोग करना आसान है:

MPMoviePlayerViewController *vc = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL]; 
[self presentMoviePlayerViewControllerAnimated:vc]; 
[vc release]; 

यह आपकी क्लिप युक्त एक मोडल व्यू कंट्रोलर पेश करेगा। यदि आप इसके किसी भी हिस्से को कस्टमाइज़ करना चाहते हैं, तो आप moviePlayer संपत्ति का उपयोग कर सकते हैं।

यदि आप किसी अन्य दृश्य के अंदर वीडियो प्रदर्शित करना चाहते हैं, तो आपको MPMoviePlayerController पर देखना चाहिए। इस कक्षा का उपयोग करने से अधिक बॉयलरप्लेट शामिल है, लेकिन आपको अधिक नियंत्रण भी देता है:

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
[player prepareToPlay]; 
player.view.frame = contentView.bounds; //The Player View's Frame must match the Parent View's 
// ... 
[player play]; 
+0

उत्तर के लिए धन्यवाद, फिर भी मैं स्मृति उपयोग का जिक्र कर रहा हूं जो अधिक है या मीडियाप्लेयर का उपयोग करते समय भी उतना ही कम। मैंने दोनों की कोशिश की है और अभी भी स्मृति खपत बहुत अधिक है (खेलते समय 20 एमबी) – chewy

संबंधित मुद्दे