问题1、mediaCodec.dequeueInputBuffer一直返回-1,
APP现象:视屏卡屏
原因:这是因为inputbuffer的内容有误,导致无法解码。可通过设延时时间解决,
如:mediaCodec.dequeueInputBuffer(30),如果还是连续出现返回-1可以通过调用mediaCodec.flush()解决。
问题2、mediaCodec.dequeueOutputBuffer一直返回-1;
APP现象:视屏卡屏
原因:这是因为outputbuffer的内存已满,需要清理,调用mediaCodec.flush(),但此方法会导致视频卡屏几秒。
问题3、使用mediaCodec视频何时显影?
原因:一般是解码完关键帧后才会显影。可以通过预判关键帧何时出现来控制surfaceview的显示时机。
4、使用mediaCodec:可以设置视频的编解码格式、分辨率、帧率、旋转方向等
//设置编码格式和分辨率
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/hevc", Width, Height);
//设置帧率
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 25);
//视频旋转
mediaFormat.setInteger(MediaFormat.KEY_ROTATION, 180);
22年03月22日 于 南京 秦淮区 新门西