2013-04-22 8 views
5

मैं एक छोटा एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं जिसमें मैं एंड्रॉइड मीडिया प्लेयर का उपयोग कर आरटीएसपी लिंक खेल रहा हूं। यह एंड्रॉइड 16 एपीआई पर कम से कम काम कर रहा है। लेकिन समस्या यह है कि यह बहुत समय ले जब मैं एंड्रॉयड 16 पर चलने खेलने के लिए है और कुछ समय तो यह और भी play.following नहीं करता कोड जो मैंएंड्रॉइड -16 में खेलते समय लाइव स्ट्रीमिंग ऑडियो देरी?

sdrPlayer = new MediaPlayer(); 
sdrPlayer.setDataSource(url); 
sdrPlayer.prepare(); 
sdrPlayer.setOnCompletionListener(video.this); 
sdrPlayer.setOnPreparedListener(video.this); 
sdrPlayer.setOnBufferingUpdateListener(video.this); 
sdrPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

उपयोग कर रहा हूँ के बाद कर रहे हैं कुछ परीक्षण का मामला

है
  1. जेडटीई एन 860 - रेडियो खेलने के लिए लगभग 4 से 5 मिनट लेता है।
  2. सैमसंग गैलेक्सी एस 4 - ऑडियो बिल्कुल काम नहीं करता है। यह onprepare विधि में प्रारंभ विधि पर कॉल करें लेकिन कोई ऑडियो नहीं है।
  3. सैमसंग SCH1415 - रेडियो
  4. एचटीसी वी 5 - ऑडियो हर समय काम नहीं करता है, लगभग 8 मिनट लेता है। यह खेलना शुरू कर देता है लेकिन कोई ऑडियो नहीं है। व्यवहार असंगत है और यह अधिक निराशा उत्पन्न कर रहा है।
+0

नितिन, मैं सुझाव दूंगा कि आप सर्वर पर यातायात को स्नीफ करें यदि आप 2 आरटीएसपी एक्सचेंजों की तुलना और तुलना कर सकते हैं। मुझे कहीं और पढ़ना याद है कि कुछ एंड्रॉइड संस्करण पर आरटीएसपी कार्यान्वयन अद्यतन ने कई मौजूदा अनुप्रयोगों को तोड़ दिया। यदि ऐसा है, तो आपको आरटीएसपी एक्सचेंज में कुछ अंतर देखना चाहिए। – Ralf

+0

टिप्पणी के लिए सबसे पहले धन्यवाद @ राल्फ लेकिन एंड्रॉइड 16 हमेशा लिंक लोड करने के लिए समय लेते हैं जब हम लिंक लोड करते हैं और कुछ अवसरों पर यादृच्छिक रूप से लोड करते हैं। साथ ही मीडिया प्लेयर की चल रही विधि सही होती है। इसलिए मैं प्रगति नहीं दिखा सकता। लेकिन कुछ बार यह सही तरीके से काम करता है। क्या यह संभव है कि सर्वर हमेशा कुछ दूषित बिट्स को पहले और कुछ बार भेजें। – Nitin

+0

प्रतीक्षा समय ऑडियो बफर आकार के कारण होते हैं। मेरा मानना ​​है कि एंड्रॉइड 16+ के साथ आकार बढ़ गया था। क्या पूछते हैं? चूंकि आप बफर आकार को नियंत्रित नहीं कर सकते हैं, यदि आप MediaPlayer का उपयोग करना चाहते हैं तो आप भाग्य से बाहर हैं। मेरा एप्लिकेशन एक एफएफएमपीजी आधारित प्लेयर का उपयोग करता है ताकि मैं बफर आकार को नियंत्रित कर सकूं। –

उत्तर

3

RTSP लिंक खेलने के लिए

sdrPlayer.prepare(); 

के बजाय sdrPlayer.prepareAsync(); का उपयोग करना चाहिए क्योंकि प्रलेखन कहते हैं

यह प्लेबैक के लिए खिलाड़ी तैयार करता एसिंक्रोनस। डेटासोर्स और डिस्प्ले सतह सेट करने के बाद, आपको या तो prepare() या prepareAsync() पर कॉल करने की आवश्यकता है। धाराओं के लिए, आपको prepareAsync() पर कॉल करना चाहिए, जो पर्याप्त डेटा को बफर किए जाने तक अवरुद्ध करने के बजाए तुरंत लौटाता है।

+0

मैं इस उत्तर का धन्यवाद करूंगा धन्यवाद – Nitin

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