【发布时间】:2014-06-20 00:44:37
【问题描述】:
好的,我已经查看了 Fadden's example 的实现 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 上?
谢谢,
【问题讨论】:
-
要明确一点:您想从相机中获取帧,使用 OpenGL 在它们之上绘制,然后将结果发送到视频编码器?这也需要出现在屏幕上吗? (这可能有助于根据您正在尝试做什么来重新表述问题,而不是描述您当前已实施的内容。)
-
是的,这是正确的,从相机获取帧,通过 OpenGL 在顶部绘制,然后发送到视频编码器......显然需要预览或显示。我可以写下我正在尝试做的事情,但我相信那会更糟,所以要坚持基础。
标签: android opengl-es android-mediacodec muxer