2012-08-17 36 views
7

मैं एवीप्लेयर का उपयोग कर एक संगीत स्ट्रीमिंग ऐप बना रहा हूं। सब कुछ ठीक काम कर रहा है, संगीत पृष्ठभूमि में खेल रहा है, आदि मेरी समस्या यह है कि जब मैं फोन पर कनेक्शन हानि अनुकरण करता हूं (सेलुलर डेटा बंद करता हूं, स्ट्रीम को रोकने के लिए प्रतीक्षा करें और फिर वापस स्विच करें) इसमें लगभग 2 मिनट लगेंगे ऐप के लिए बफर भरने के लिए भले ही कोई 3 जी नेटवर्क मौजूद हो (मैं इस बीच वेब सर्फ कर सकता हूं)।आईओएस एवीप्लेयर कनेक्शन हानि के बाद धीमी प्रतिक्रिया देना

सब कुछ सिम्युलेटर में काम कर रहा है, लेकिन डिवाइस पर नहीं। यदि मैं 2 मिनट का इंतजार करता हूं तो मुझे एक उचित प्लेबैक मिल जाएगा, ठीक से टिपकीप अधिसूचना, और इससे सबकुछ ठीक है, लेकिन यह दोबारा कुछ सेकंड होना चाहिए। यह ठीक है जब मैं अपने राउटर पर बैंडविड्थ नियंत्रण बंद करके कम बैंडविड्थ अनुकरण करता हूं, लेकिन जब मैं सेलुलर डेटा को बंद करके वाहक परिवर्तन को अनुकरण करता हूं और इसे लंबे समय तक वापस चला जाता हूं।

मैं "playbackBufferEmpty" पर प्रारंभ अंतराल को कॉल कर रहा हूं और "playbackLikelyToKeepUp" पर अंतराल को कॉल कर रहा हूं। मुख्य समस्या "playbackLikelyToKeepUp" बहुत देर हो चुकी है।

- (void)beginInterruption { 
self.backgroundTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]; 
} 

- (void)endInterruptionWithFlags:(NSUInteger)flags { 
    [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTaskIdentifier]; 
    self.backgroundTaskIdentifier = UIBackgroundTaskInvalid; 
    if(self.interrupted) [self play]; 
    self.interrupted = NO; 
} 

कोई विचार? मैंने अपना पूरा दिन इस मुद्दे के साथ बिताया है, सबकुछ गुम हो गया है लेकिन मैं फंस गया हूं। अग्रिम धन्यवाद।

उत्तर

2

मुझे महीनों पहले इसी स्थिति का सामना करना पड़ा, मेरा निष्कर्ष "प्लेबैक संभावित रूप से विश्वसनीय नहीं है"।

मेरा समाधान मैन्युअल रूप से buffered टाइमरेंज चेक किया गया है।

एफवाईआई, मैंने रिमोट मीडिया प्लेबैक के लिए एवीप्लेयर क्लास बनाया - HysteriaPlayer आप इसे सीधे इस्तेमाल कर सकते हैं, या .m फ़ाइल को देख सकते हैं।

उम्मीद है कि इससे मदद मिलती है।