我正在研究一种算法,根据通常的ExtractDecodeEditEncodeTest CTS test在MediaCodec中将两个视频连接在一起,我对这部分代码特别感兴趣:
outputSurface.awaitNewImage();
outputSurface.drawImage();
inputSurface.setPresentationTime(videoDecoderOutputBufferInfo.presentationTimeUs * 1000);
inputSurface.swapBuffers();
其中outputSurface
是解码器的输出表面,inputSurface
是编码器的输入表面。
假设我有两个MediaExtractors和两个MediaCodec作为解码器和一个预设格式的编码器,我可以在第二个解码器的循环中做同样的事情吗?
secondOutputSurface.awaitNewImage();
secondOutputSurface.drawImage();
inputSurface.setPresentationTime(prevSegmentEndNanos + videoDecoderOutputBufferInfo.presentationTimeUs * 1000);
inputSurface.swapBuffers();
其中prevSegmentEndNanos
是前一个解码器的最后一个缓冲区在完成解码之前的时间戳。 inputSurface
是完全相同的编码器表面。
这可能吗?
答案 0 :(得分:1)
是的,这应该可以正常工作。