MediaCodec编码后的视频时间不正确的问题
本人android新手一枚, 最近在做摄像头录像的时候,用MediaCodec编码摄像头的yuv数据成h264, 但是发现编码后的h264文件时间不对..比如录像录了20秒,但是h264文件就只有12秒..视频播放速度加快了..但是在摄像头fps和编码器fps设置都是一样的25, h264文件属性里面显示的也是25fps.. 所以很困惑,想问问这是什么原因..望大牛指导.. 编码代码如下:
ByteBuffer[] iBufs = mMediaCodec.getInputBuffers();
ByteBuffer[] oBufs = mMediaCodec.getOutputBuffers();
long audioAbsolutePtsUs = System.nanoTime() / 1000;
int iIdx = mMediaCodec.dequeueInputBuffer(-1);
if (iIdx >= 0) {
ByteBuffer iBuf = iBufs[iIdx];
iBuf.clear();
iBuf.put(in);
mMediaCodec.queueInputBuffer(iIdx, 0, in.length, audioAbsolutePtsUs, 0);
}
MediaCodec.BufferInfo bufInfo = new MediaCodec.BufferInfo();
int oIdx = mMediaCodec.dequeueOutputBuffer(bufInfo, 0);
while (oIdx >= 0) {
ByteBuffer oBuf = oBufs[oIdx];
byte[] out = new byte[bufInfo.size];
oBuf.get(out);
mOutput.write(out, 0, out.length);
mMediaCodec.releaseOutputBuffer(oIdx, false);
oIdx = mMediaCodec.dequeueOutputBuffer(bufInfo, 0);
}