好的,我已经查看了Fadden 的实现 Android MediaMux 的示例。我不知道如何让我的场景进入 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 的表面元素?简单地将正在写入 vg 帧的内容放在编解码器的 videoInputSurface 上?
谢谢,