如何确定Android MediaFormat.KEY_SAMPLE_RATE的值

2 audio android mediacodec

我正在尝试编码

音频数据:

  • 采样率= 44100 Hz
  • Monoral频道
  • PCM_16BIT

对某些AAC来说 MediaCodec

编解码器配置有点令人困惑,但到目前为止,我至少做了如下操作,至少没有错误.

    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);
Run Code Online (Sandbox Code Playgroud)

这是我的猜测所以如果你发现它错了请告诉我.

KEY_CHANNEL_COUNT= 1对应于音频源属性:Monoral Channel = 1,

KEY_SAMPLE_RATE= 44100到音频源属性:Sample rate = 44100 Hz,

并且由于音频源属性是PCM_16BIT,KEY_BIT_RATE应该是 1*44100*16.

我对么?我试图找到文档,但在网上找不到.谢谢.

fad*_*den 5

对于编码器,KEY_BIT_RATE指的是所需的输出比特率,而不是输入比特率.官方文档在这里,但描述有点简洁.

CTS EncoderTest对音频进行编码.继续下去并不多,但它有基本要素.