我尝试为“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();
最佳答案
必须使用格式设置一些必填值。如果查看docs for MediaFormat,它将显示“所有未标记为可选的键都是必需的”。如果您未能设置必填 key ,则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()
为您设置了。