2012-08-22 11 views
7

मैं मीडियाप्लेयर (एंड्रॉइड आईसीएस) का उपयोग करके लूप में एकाधिक वीडियो चलाने की कोशिश करता हूं और प्रत्येक बार अपूर्ण() नामक वीडियो बदलता हूं।setVideoSurfaceTexture विफल: -22 mediaplayer में

यह बहुत अच्छा है, लेकिन एक यादृच्छिक समय आवेदन फ्रीज के बाद काम करता है और मैं त्रुटि मिलती है:

[SurfaceView] कनेक्ट: पहले से ही जुड़ा (CUR = 3, अनुरोध = 3) setVideoSurfaceTexture विफल रहा है: -22

जब इस त्रुटि हो, आंतरिक रूप से यह रीसेट खिलाड़ी फोन

रेफरी: mediaplayer.cpp

if (err != OK) { 
    LOGE("setVideoSurfaceTexture failed: %d", err); 
    // Note that we must do the reset before disconnecting from the ANW. 
    // Otherwise queue/dequeue calls could be made on the disconnected 
    // ANW, which may result in errors. 
    reset(); 
    disconnectNativeWindow(); 
    return err; 
} 

मेरे कोड के अनुसार मुझे onprepared() के लिए अधिसूचना मिलती है और खेलना शुरू होता है।

असल में इस त्रुटि के कारण कोई प्लेबैक नहीं है।

तो मैं mediaplayer को रीसेट करने की कोशिश करता हूं और जब यह समस्या होती है और mediaplayer नहीं खेल रहा है, तो कॉल तैयार करें (लेकिन मैं इस बग को कैप्चर करने में सक्षम नहीं हूं (mp.isPlaying() -> true (bec'z प्रारंभ कहा जाता है() में onprepared())।

मैं

onprepared() { 
    mp.start(); 
    if (pbm : [SurfaceView] connect : already connected (cur=3, req=3) 
             setVideoSurfaceTexture failed : -22 ) { 
     reset the mediaplayer source and call prepare 
    } 
} 

की तरह तर्क कोशिश मैं कैसे मीडियाप्लेयर फिर?

उत्तर

9

हम निम्नलिखित तरीके से इस समस्या से बचने कर सकते हैं पुनः आरंभ करने की इस बग का पता लगाने कर सकते हैं। ..

mediaPlayer.setDisplay(null); 

    mediaPlayer.reset(); 

के बाद इस surfaceholder सेट फिर से पहले मीडियाप्लेयर शुरू

mediaPlayer.setDisplay(surfaceHolder1); 

    mediaPlayer.start(); in onprepared notification. 
संबंधित मुद्दे