在我的应用程序中,我可以使用GPUImage库来显示从相机传输的视频的效果(如模糊滤镜、高斯滤镜)。
基本上,该库会从相机接收输入,获取原始字节数据,将其从YUV格式转换为RGBA格式,然后对该图像应用效果并使用OpenGL在GLSurfaceView
的Surface
上显示。最终,对用户而言,看起来就像是应用了效果的视频。
现在,我想使用MediaCodec API将Surface
的帧记录为视频。
但是,这个讨论说我们无法将预定义的Surface
传递给MediaCodec
。
我在bigflake看到了一些示例,他是使用MediaCodec.createInputSurface()
创建Surface
,但我需要从GLSurfaceView
获取Surface
。
那么,我该如何将一个Surface
的帧记录为视频?
我将并行记录音频,使用FFMPEG合并该视频和音频,并呈现给用户已应用效果的视频。