MediaCodec - 编码器的输入表面可以从两个解码器接收SurfaceTextures'输出表面?

时间:2016-10-05 10:38:22

标签: android mediacodec

我正在研究一种算法,根据通常的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是完全相同的编码器表面。

这可能吗?

1 个答案:

答案 0 :(得分:1)

是的,这应该可以正常工作。