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

亡梦爱人 提交于 2019-12-01 08:46:54

问题


I want to change the encoding bitrate including H264 and AAC by Android MediaCodec dynamically , according to the current network.

How to update the encoding bitrate in Android MediaCodec dynamically ?

PS: I found PARAMETER_KEY_VIDEO_BITRATE and setParameters is available on 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.

Is there any way to do it under API 19 ?


回答1:


Stopping the Codec, setting the parameters and restarting it worked for me.




回答2:


Your format needs to support adaptive bitrate. Eg. I was able to set the bitrate using the following. Make sure you're in api 19 or above though.I was encoding the H264 frames into an FLV container.

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



来源:https://stackoverflow.com/questions/31823231/how-to-change-mediacodec-encoding-bitrate-on-the-fly-while-streaming-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!