原因:由于涉及到yuv的编码故使用android自带的MediaCodec模块进行硬件编码
概况:通过获取编码设备信息创建编码对象,然后设置编码参数,通过输入输出缓冲区进行数据的传递和读取。
流程如下:
首先获取当前设备支持的编解码设备信息:首先获取codc个数,然后判断是否是编码codec.
m_codeccount = MediaCodecList.getCodecCount();//获取codec个数
for(int i=0;i<m_codeccount;i++)
{
MediaCodecInfo info = MediaCodecList.getCodecInfoAt(i);//获取codecinfo
if(info.isEncoder())//判断当前codec是否支持编码
{
String[] str = info.getSupportedTypes();//获取支持的类型
}
}
通过上面获取的Codec类型有如下:
Type==audio/3gpp Name==OMX.google.amrnb.encoder
Type==audio/amr-wb Name==OMX.google.amrwb.encoder
Type==video/hevc Name==OMX.qcom.video.encoder.hevc
Type==video/mp4v-es Name==OMX.qcom.video.encoder.mpeg4
Type==video/avc Name==OMX.qcom.video.encode