我正在寻找最快的方法来在Android设备上“解码编辑编码”视频。所以我选择带有Surface的MediaCodec作为输入和输出。
这是我的想法:
1.使用MediaCoder解码mp4文件,输出为SurfaceTexture;
2.使用OpenGL编辑表面,输出为纹理;
3.使用MediaCodec进行编码,输入为Surface
问题是: 解码和编辑比编码快得多,所以当我解码和编辑50帧时,编码可能只消耗10帧。但是当我使用表面通过Encode输入时,我不知道编码器是否消耗了所有先前的帧。因此丢失了40帧。
有什么办法让我知道表面消耗状态,以便我可以控制解码速度或其他任何想法吗?