【问题标题】:How to enable B frame encoding in android?如何在android中启用B帧编码?
【发布时间】:2021-11-12 22:58:15
【问题描述】:

现在,我正在使用 mediaCodec 对视频进行编码,并希望在 Android 编码期间启用 B 帧。 MediaFormat的配置如下:

format.setInteger("profile", 8);
format.setInteger("level", 0x200);
format.setInteger("max-bframes", 5);

mediacodec = createByCodecName(properties.codecName);
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);

但是,我无法获得 B 帧。为什么?谁能帮帮我?

【问题讨论】:

  • 您在哪个版本的 Android 上测试它?
  • Android 9 和 Android 11。

标签: android android-studio android-mediacodec video-encoding


【解决方案1】:

KEY_MAX_B_FRAMES 密钥已添加到 API 级别 29 中的 MediaFormat

因此,运行 Android 9 及更早版本的设备预计不会识别此字段。至于 Android 10 及更高版本,documentation 表示:

注意非零值不保证B帧;由编码器决定。

换句话说,该字段不会强制编码器使用 B 帧,仅设置上限以防万一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2012-11-21
    相关资源
    最近更新 更多