好的,我已经回顾了实施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帧?
谢谢,
解决方法:
尝试查看this.第一个example显示如何通过编解码器输入表面上的OpenGL ES命令绘制,以通过Mediamuxer将其记录到MP4文件.