4

好的,我已经查看了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 上?

谢谢,

4

1 回答 1

2

试着看看这个。第一个示例展示了如何通过 OpenGL ES 命令在编解码器输入表面上进行绘制,以通过 MediaMuxer 将其记录到 MP4 文件中。

于 2013-09-27T00:52:39.020 回答