Android 媒体编解码器 avc/h264 编码器始终产生 1MB 输出缓冲区大小

问题描述 投票:0回答:1

我正在尝试在android上使用硬件编码器进行AVC编码

OMX.qcom.video.encoder.avc

我的格式设置看起来像

AMediaFormat_setString(avc_format, AMEDIAFORMAT_KEY_MIME, "video/avc");
AMediaFormat_setInt32(avc_format, AMEDIAFORMAT_KEY_WIDTH, 1920);
AMediaFormat_setInt32(avc_format, AMEDIAFORMAT_KEY_HEIGHT, 1080);
AMediaFormat_setInt32(avc_format, AMEDIAFORMAT_KEY_BIT_RATE, 1000000);
AMediaFormat_setInt32(avc_format, AMEDIAFORMAT_KEY_I_FRAME_INTERVAL, 5);
AMediaFormat_setFloat(avc_format, AMEDIAFORMAT_KEY_FRAME_RATE, 15.0);
AMediaFormat_setInt32(avc_format, AMEDIAFORMAT_KEY_COLOR_FORMAT, 21);

当我尝试将输出缓冲区出队时

  if (status >= 0) {
    bufsize = 0;
    uint8_t* buf = AMediaCodec_getOutputBuffer(avc_encoder_, status, &bufsize);
  }

缓冲区大小始终为 1MB。我尝试更改比特率和帧速率,但没有看到任何差异。 知道为什么会发生这种情况吗?

我尝试更改比特率和帧速率,但没有看到任何差异。知道为什么会发生这种情况吗?

android h.264 android-mediacodec encoder
1个回答
0
投票

事实证明,API AMediaCodec_dequeueOutputBuffer() 的 info 参数中提供了正确的缓冲区大小。

© www.soinside.com 2019 - 2024. All rights reserved.