use*_*818 3 encode android-4.2-jelly-bean
在Android4.1中,经常在实时编码应用程序中请求关键帧。但是如何使用MediaCodec对象呢?当前的Android4.2 SDK似乎不支持它。
小智 5
您可以通过排队输入缓冲器时指定MediaCodec.BUFFER_FLAG_SYNC_FRAME产生随机关键帧:
MediaCodec codec = MediaCodec.createDecoderByType(type);
codec.configure(format, ...);
codec.start();
ByteBuffer[] inputBuffers = codec.getInputBuffers();
for (;;) {
int inputBufferIndex = codec.dequeueInputBuffer(timeoutUs);
if (inputBufferIndex >= 0) {
// fill inputBuffers[inputBufferIndex] with valid data
...
codec.queueInputBuffer(inputBufferIndex, 0, inputBuffers[inputBufferIndex].limit(), presentationTime,
isKeyFrame ? MediaCodec.BUFFER_FLAG_SYNC_FRAME : 0);
}
}
Run Code Online (Sandbox Code Playgroud)
偶然发现在Galaxy Nexus上编码视频时需要插入随机关键帧。在它上面,MediaCodec并没有在视频开始时自动生成关键帧。
| 归档时间: |
|
| 查看次数: |
4101 次 |
| 最近记录: |