首先感谢您提供的这个强大的库。
仅仅只有一层的话,就是单独使用offScreenCanvas实现动画,且导出视频。目前是已经实现了。
模仿这个库 https://github.com/GH-HOME/DecodeEncodeMP4
使用您的OffScreenCanvas实现opengl动画,一层是视频,然后将两层合并导出一个视频。
主要想法是这样的
从一个.mp4文件中解码视频流到surface上
利用OpenGL ES渲染改变视频流中每一帧的内容
将改变后的视频流重新编码输出到一个新的.mp4文件
然后我做法是在外部创建了视频的EGLDisplay EGLContext EGLSurface,然后将这EGLDisplay和EGLContext两个创建好的传给OffScreenCanvas、看了你内部实现,如果外部有传EglContext,就会实现两层共享。然后外部合成视频的时候是通过GLSurfaceTextureProducerView向外提供的SurfaceTexture。生成一个surface (new Surface(SurfaceTexture))提供给MediaCodec绑定起来。接下来就是合成了。目前出现合成失败。我主要还是模仿上面 这个库的思想https://github.com/GH-HOME/DecodeEncodeMP4
如果是三层,第一层视频,第二层opengl动画,使用您的offScreenCanvas 第三层视频。主要还是想通过共享EglContext,去合成一个视频。有何思路啊?