2013-10-31 7 views
5

मैंने मीडियाकोडेक लाइब्रेरी का उपयोग करके एक वीडियो प्लेयर बनाया, और मैं एक प्लेलिस्ट सुविधा जोड़ना चाहता था। मैंने लगातार दो वीडियो के बीच एक आसान संक्रमण करने के लिए मीडियाकोडेक के दो उदाहरण होने की कोशिश की, हालांकि यह कुछ खतरनाक प्रतीत होता है, कुछ उपकरणों में (मैंने साइनोजन के साथ एक एस 4 की कोशिश की) यह पूरी तरह से काम करता है, हालांकि टचविज़ के साथ एक एस 4 में मीडिया कोडेक घोषणा पर कोड दुर्घटनाग्रस्त हो गया। यह कोड स्निपेट है:एकाधिक मीडियाकोडेक उदाहरण

MediaExtractor extractor = new MediaExtractor(); 
extractor.setDataSource(path1); 

MediaFormat format = extractor.getTrackFormat(0); 
String mime = format.getString(MediaFormat.KEY_MIME); 

extractor.selectTrack(0); 
MediaCodec decoder = MediaCodec.createDecoderByType(mime); 
decoder.configure(format, null, null, 0); 

MediaExtractor extractor2 = new MediaExtractor(); 
extractor2.setDataSource(path2); 

MediaFormat format2 = extractor2.getTrackFormat(0); 
String mime2 = format.getString(MediaFormat.KEY_MIME); 

extractor2.selectTrack(0); 
MediaCodec decoder2 = MediaCodec.createDecoderByType(mime2); 
decoder2.configure(format2, null, null, 0); 

और अपवाद मैं टचविज एस 4 पर मिल गया है

E/ACodec(17651): configureCodec multi window instance fail appPid : 17651 
E/ACodec(17651): [OMX.qcom.video.decoder.avc] configureCodec returning error -38 
E/MediaCodec(17651): Codec reported an error. (omx error 0x80001001, internalError -38) 

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

धन्यवाद एक बहुत

उत्तर

0

आप format2 के लिए एक ही निकालने उदाहरण का उपयोग कर रहे हैं: MediaFormat format2 = >> निकालने < < .getTrackFormat (0);

क्या आप एक ही समय में एक से अधिक MediaExtractors चल रहे थे?

+0

लानत (एस 3 पर मामला है), एक टाइपो था पाता है, मैं संपादित लेकिन बग अभी भी बनी रहती , मैंने इसे केवल उन वीडियो तक सीमित कर दिया जो एंड्रॉइड कैमरे के साथ शूट किए गए थे। – roimatola

+0

मुझे एक ही समस्या है। क्या आपने इसे हल किया? – pstoppani

+0

@roimatola मुझे उत्सुकता है यदि आपको कभी इसके लिए कोई समाधान मिला? –

4

मेरे अनुभव से, आपका मुद्दा तब प्रकट होता है जब पर्याप्त संसाधन नहीं होते हैं ताकि एक ही कोडेक के दो उदाहरण बनाए जाएं। उदाहरण के लिए, मुझे दो 1080p, h264 डीकोडर्स को समानांतर में कॉन्फ़िगर करने का प्रयास करते समय S3 पर मिला, लेकिन एक 720 पी और एक 1080 पी, या दो 720 पी डिकोडर होने के बाद, ठीक ठीक चल रहा है। आप क्या कर सकता है, हालांकि कोई समाधान परिपूर्ण है:

  • स्पष्ट एक, उन स्थितियों में पहले कोडेक खत्म और उसके बाद ही एक दूसरे को कॉन्फ़िगर करने के लिए प्रतीक्षा करें।

  • उसी फ़ाइल के लिए वैकल्पिक डिकोडर के लिए डिकोडर्स सूची खोजें। यह कुछ उपकरणों पर काम कर सकते हैं, लेकिन अन्य पर नहीं या यह सिर्फ एक sw विकोडक वास्तविक समय डिकोड जो हो सकता है नहीं

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