请帮我:如何设置MediaCodec编码H.264视频的平均+最大比特率?
我使用MediaCodec来编码来自摄像机的H.264视频,问题是,当我移动手机时,输出视频的质量非常高,充满了马赛克/可视块视频。
初级讲座还有一些细节:
我的编码码率为500kbps的,和比特率模式是BITRATE_MODE_VBR。
我试图将比特率改为800 kbps,输出视频质量提高了很多,如果我将比特率模式更改为BITRATE_MODE_CQ,输出视频质量是完美的,但比特率会增加到1400 kbps。
我想保持平均比特率处于较低的水平,例如, 500kbps,但允许在移动电话时将比特率突发一些更大的比特率,例如, 800 kbps。在iOS VideoToolBox中,有一个API kVTCompressionPropertyKey_DataRateLimits来设置平均比特率和最大比特率,但在Android中,我如何实现平均最大比特率控制?
我注意到在配置MediaCodec时有一个隐藏的“max-bitrate”参数,但它没有任何作用(因为Android框架忽略这个参数,见http://androidxref.com/7.1.1_r6/xref/frameworks/av/media/libstagefright/ACodec.cpp#configureCodec),我还注意到有一个隐藏的“质量”参数,但它也没有效果。
请帮帮我,谢谢!!!
我试过'KEY_MAX_BIT_RATE'参数,实际上关键是“最大比特率”,但它在VBR中没有任何作用,而且似乎参数被本机代码丢弃了,请参阅http://androidxref.com /7.1.1_r6/xref/frameworks/av/media/libstagefright/ACodec.cpp#configureCodec。 当我编码720p视频时,我将比特率设置为800 kbps,当我在相机周围移动时,输出视频质量非常差,满块,我想让MediaCodec在输入数据增加时临时增加比特率,并在输入数据减少时将比特率降低到平均水平。我该怎么做? – Piasy
视频芯片组是延迟的来源。 您正在要求它做太多的增量。 –