【问题标题】:IllegalStateException when MediaCodec.configure AndroidMediaCodec.configure Android 时出现 IllegalStateException
【发布时间】:2013-06-22 14:23:17
【问题描述】:

我尝试为“audio/3gpp”创建编码器,但我的应用崩溃了...

我用这个代码

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)

【问题讨论】:

    标签: android illegalstateexception


    【解决方案1】:

    格式中有一些必须设置的值。如果您查看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_MIME 应该由createEncoderByType() 为您设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 2017-07-21
      • 2013-08-27
      • 2015-04-14
      • 2023-03-18
      相关资源
      最近更新 更多