2013-10-30 6 views
7

मैं एंड्रॉइड पर ऑनलाइन स्ट्रीमिंग प्लेयर विकसित कर रहा हूं। मैंने पाया कि mediaplayer कभी बफरिंग बंद नहीं होगा! यह बफर के 100% पढ़ता है और 'कुछ' कर रखता है, क्योंकि धारा केवल केवल एक बार पढ़ा जा सकता है और वहाँ कुछ भी नहीं बफ़र के लिए छोड़ दिया ... मुझे लगता है किएंड्रॉइड मेडियाप्लेयर अंतहीन बफरिंग

public void onBufferingUpdate(MediaPlayer player, int percent) 

प्रतिशत = 100 के साथ बेहद कहा जाता है यह एक रात में बैटरी नाली। क्या मैं कुछ गलत कर रहा हूं या इस पर कुछ उचित स्पष्टीकरण है? ऐसा लगता है कि बफरिंग रद्द नहीं की जा सकती है, इसे रोकने का एकमात्र तरीका Mediaplayer को रीसेट करना है। मुझे इस अंतहीन 'बफरिंग' को रोकने के लिए कुछ रास्ता चाहिए!

यह मैं कैसे

mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mMediaPlayer.setDataSource(streamUrl); 
mMediaPlayer.setOnBufferingUpdateListener(this); 
mMediaPlayer.setOnInfoListener(this); 
mMediaPlayer.setOnPreparedListener(this); 
mMediaPlayer.setOnErrorListener(this); 
mMediaPlayer.prepareAsync(); 

लॉग संदेशों मैं देख रहा हूँ MediaPlayer init:

10-30 08:45:21.169: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=93, ext2=0x0 
10-30 08:45:22.169: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=100, ext2=0x0 
10-30 08:45:23.169: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=100, ext2=0x0 
10-30 08:45:24.172: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=100, ext2=0x0 
10-30 08:45:25.172: D/MediaPlayer(13217): Message: MEDIA_BUFFERING_UPDATE(3), ext1=100, ext2=0x0 
... 
+0

क्या आपने कभी कुछ भी पता लगाया है? मैं एक ऐप विकसित कर रहा हूं जहां एक वीडियो में एक मीडियाप्लेयर के माध्यम से एक वीडियो खेला जाता है और मुझे एहसास हुआ कि इसे छोड़ने के बाद यह फोन बंद हो गया था, भले ही फोन स्क्रीन बंद हो और सोए! मीडियाप्लेयर को रोकना और रीसेट करना ऐसा लगता है लेकिन यह अभी भी बेहतर होगा अगर मैं इसे रोक सकता हूं, क्योंकि मुझे प्लेयर को फिर से शुरू करना है, फिर से शुरू करने में अधिक समय लगता है। – Flyview

+0

मुझे पता चला कि यह केवल मेरे हुवेई फोन पर इस तरह व्यवहार करता है (कम से कम किसी भी अन्य डिवाइस का परीक्षण मैंने सही ढंग से किया है)। अंत में मैंने इसे इस तरह बनाया: यदि खिलाड़ी कुछ समय के लिए रुक गया है और बफरिंग कर रहा है तो मैं प्लेयर को रीसेट कर देता हूं। – Arvydas

उत्तर

0

इस प्रयास करें। वापस दबाते समय मीडिया प्लेयर खत्म हो जाएगा।

@Override 
public void onBackPressed() { 

    mp.stop(); 
    mp.reset(); 
      this.finish(); 

} 
+0

बिंदु यह है कि मैं mediaplayer को रीसेट नहीं करना चाहता हूं। वांछित व्यवहार: उपयोगकर्ता ट्रैक चलाता है -> प्रेस रोकें -> ऐप छोड़ता है -> कुछ घंटों में वापस आता है -> खेलना जारी रखता है। – Arvydas

+0

mp.pause(); पर्याप्त हो सकता है – Carnage

+0

अच्छी तरह से रोकें() काम करता है और मुझे यह वांछित व्यवहार मिलता है, सिवाय इसके कि mediaplayer 'बफरिंग' रखता है और अगर मैं रोकता हूं तो बैटरी को हटा देता है। अगर मैं एमपी को रीसेट करता हूं, तो अंतहीन बफरिंग बंद हो जाती है, लेकिन मैं खेलना जारी रखने में सक्षम नहीं हूं। अगर यह 100% तक पहुंचने पर बफरिंग बंद हो जाए तो यह सही होगा, लेकिन यह नहीं (कुछ जादू कारणों के लिए ...)। मैं mediaplayer को रीसेट किए बिना बफरिंग रोकने के लिए अच्छा तरीका ढूंढ रहा हूं। – Arvydas

2

सबसे पहले, मीडियाप्लेयर को उपयोग में नहीं होने पर रोकना अच्छा नहीं है। यह कभी-कभी काम कर सकता है, लेकिन एंड्रॉइड अंततः उन संसाधनों को वापस ले जा रहा है। जब आपका ऐप सक्रिय नहीं होता है तो इसे साफ करना न केवल खराब अभ्यास है।

उसने कहा, मुझे विश्वास है कि यह क्या कर रहा है सर्वर के साथ एक खुली सॉकेट बनाए रख रहा है, शायद यह बफरिंग अधिसूचना भेज रहा है जब भी यह सुनिश्चित करता है कि सॉकेट अभी भी खुला है। HTTP स्ट्रीमिंग आपके द्वारा पूछे जाने वाले कार्यों को करने के लिए एक प्रोटोकॉल बहुत आसान है। लेकिन आपके पास इसे काम करने के लिए कम से कम एक विकल्प है। आप एक प्रॉक्सी डाल सकते हैं जो आपको स्ट्रीम और प्लेबैक को एक साथ कैश करने की अनुमति देगा। जब स्ट्रीम पूरी तरह से कैश किया जाता है तो उपयोगकर्ता के साथ बाहर निकलने पर क्या होता है, इसके साथ निपटने के बारे में आपको चालाक होना होगा, लेकिन यह काम कर सकता है। उस समय, मीडियाप्लेयर को स्थानीय फ़ाइल प्लेबैक में घटा दिया जाता है, जिसे आप रोक सकते हैं और ऐप खोले जाने पर सही बिंदु की तलाश कर सकते हैं। यह संसाधनों और नेटवर्क संचार को बेहतर तरीके से प्रबंधित करने का साधन प्रदान करता है।

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