【问题标题】:How to change MediaCodec encoding bitrate on the fly while streaming in Android?如何在 Android 中流式传输时动态更改 MediaCodec 编码比特率?
【发布时间】:2015-10-27 16:21:26
【问题描述】:

我想根据当前网络动态改变AndroidMediaCodec编码码率包括H264和AAC

如何在AndroidMediaCodec中动态更新编码码率?

PS:我发现 PARAMETER_KEY_VIDEO_BITRATEsetParameters 在 API 19 上可用

PARAMETER_KEY_VIDEO_BITRATE

动态更改视频编码器的目标比特率。该值是一个 Integer 对象,包含以 bps 为单位的新比特率。

常数值:“视频比特率”

setParameters

向组件实例传达其他参数更改。

投掷 如果处于未初始化状态,则出现 IllegalStateException。

在 API 19 下有什么办法吗?

【问题讨论】:

  • @fadden 你能给我一些建议吗?谢谢。
  • 对不起,我不知道。

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


【解决方案1】:

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

【讨论】:

  • 为什么不呢?我认为不停止编码器就不可能改变比特率。
  • 我也这么认为。所以我希望有人能确保它。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2015-08-26
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多