2013-06-21 6 views
7

मैं के लिए "ऑडियो/3gpp" और मेरे ऐप्लिकेशन क्रैश एनकोडर बनाने का प्रयास करते समय ...IllegalStateException MediaCodec.configure एंड्रॉयड

मैं इस कोड

String mMime = "audio/3gpp"; 
MediaCodec mMediaCodec = MediaCodec.createEncoderByType(mMime); 
MediaFormat mMediaFormat = MediaFormat.createAudioFormat(mMime, RECORDER_SAMPLERATE, 1); 
mMediaCodec.configure(mMediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); 
mMediaCodec.start(); 

अपवाद
java.lang का उपयोग करें। IllegalStateException
android.media.MediaCodec.native_configure (मूल निवासी विधि)
android.media.MediaCodec.configure पर (MediaCodec.java:256)
com.agent.mobile.TestAppActivity.initMediaCodec (TestAppActivity.java:234) पर

उत्तर

5

कुछ अनिवार्य मूल्यों उस प्रारूप में सेट किया जाना चाहिए रहे हैं। यदि आप docs for MediaFormat देखते हैं, तो यह कहता है "वैकल्पिक रूप से चिह्नित सभी कुंजियां अनिवार्य नहीं हैं"। यदि आप एक अनिवार्य कुंजी सेट करने में विफल रहते हैं, तो MediaCodec कोई त्रुटि फेंकता है क्योंकि इसे किसी अवैध स्थिति में छोड़ दिया गया है।

जोड़ें:

mMediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, <bit rate>); 
mMediaFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, <sample rate>); 
mMediaFormat.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1); 

KEY_MIMEcreateEncoderByType() द्वारा आपके लिए निर्धारित किया जाना चाहिए था।

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