我正在尝试编码
音频数据:
通过
MediaCodec
访问某些AAC编解码器配置有点令人困惑,但到目前为止,我至少做到了以下操作,没有任何错误。
codec = MediaCodec.createEncoderByType("audio/mp4a-latm");
MediaFormat format = new MediaFormat();
format.setString(MediaFormat.KEY_MIME, "audio/mp4a-latm");
format.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1);
format.setInteger(MediaFormat.KEY_SAMPLE_RATE, 44100);
format.setInteger(MediaFormat.KEY_BIT_RATE, 1*44100*16);
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectHE);
codec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
这只是我的猜测,因此,如果您发现错误,请告诉我。
KEY_CHANNEL_COUNT
= 1对应于音频源属性:Monoral Channel = 1
,音频源属性
KEY_SAMPLE_RATE
= 44100:Sample rate = 44100 Hz
,并且由于音频源属性为PCM_16BIT,因此
KEY_BIT_RATE
应该为1*44100*16
。我对么?我尝试查找文档,但无法在网络上找到。谢谢。
最佳答案
对于编码器,KEY_BIT_RATE
是指所需的输出比特率,而不是输入比特率。官方文档是here,但是描述有点简洁。
CTS EncoderTest对音频进行编码。没什么大不了的,但是它具有基本要素。
关于android - 如何确定Android MediaFormat的值。KEY_SAMPLE_RATE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21805627/