我正在尝试编码

音频数据:

  • 采样率= 44100 Hz
  • 单声道Channel
  • PCM_16BIT

  • 通过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/

    10-11 00:15