Android MediaMuxer将Surface连接到Codec输入

时间:2013-09-27 00:30:26

标签: android opengl-es mediacodec muxer

好的,我已经审核了实施Android MediaMux的Fadden's example。我不知道如何让我的场景进入MP4多路复用编解码器的表面输入。我正在研究一种音频处理器,它会消耗音频和视频I / O,因此MediaRecord会失败,但MediaMux听起来像是一个可行的解决方案。

从编解码器创建一个inputSurface:

videoInputSurface = codec.createInputSurface();

我已经实现了openGLSurfaceView。我只需通过调用:

即可从视图中获取曲面
myGLSurface = myGLView.getHolder().getSurface();

但这并未设定表面。它只是抓住它。有没有一种简单的方法可以让myGLSurface写入videoInputSurface。

为了使事情更复杂,我将cameraPreview添加到同一个视图组,vg,myGLView被写入:

vg.addView(mCameraPreview);

将myGLView设置为透明,以便将openGL场景叠加在cameraPreview的顶部。

myGLView.getHolder().setFormat(PixelFormat.TRANSLUCENT);

有没有一种简单的方法来获取vg的表面元素?简单地将正在写入的内容写入编码解码器的videoInputSurface上的vg帧?

谢谢,

1 个答案:

答案 0 :(得分:2)

尝试查看this。第一个example显示如何通过编解码器输入表面上的OpenGL ES命令绘制,以通过MediaMuxer将其记录到MP4文件。