如何在 Android 中流式传输时动态更改 MediaCodec 编码比特率?

How to change MediaCodec encoding bitrate on the fly while streaming in Android?

我想根据 Android MediaCodec 动态更改 编码比特率 包括 H264 和 AAC到当前网络。

如何动态更新 Android MediaCodec 中的编码比特率?

PS:我发现 PARAMETER_KEY_VIDEO_BITRATEsetParameters 可用于 API 19

PARAMETER_KEY_VIDEO_BITRATE

Change a video encoder's target bitrate on the fly. The value is an Integer object containing the new bitrate in bps.

Constant Value: "video-bitrate"

setParameters

Communicate additional parameter changes to the component instance.

Throws IllegalStateException if in the Uninitialized state.

在API19下有什么办法吗?

停止编解码器,设置参数并重新启动它对我有用。

您的格式需要支持自适应比特率。例如。我能够使用以下设置比特率。请确保您处于 api 19 或更高版本 though.I 正在将 H264 帧编码到 FLV 容器中。

Bundle bitrate = new Bundle(); bitrate.putInt(MediaCodec.PARAMETER_KEY_VIDEO_BITRATE, targetBitrate); mEncoder.setParameters(bitrate);