2013-06-21 7 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)

答えて

5

com.agent.mobile.TestAppActivity.initMediaCodec(TestAppActivity.java:234)の形式で設定しなければならないいくつかの必須値があります。 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()によってあなたのために設定されている必要があります。

関連する問題