android里canvas视频帧,如何使用OffScreenCanvas导出多层视频

本文探讨了尝试通过OffScreenCanvas与OpenGL进行多层视频与动画合成,目标是将一个视频流经过OpenGLES渲染处理后再编码成新的视频。作者遇到的问题在于合成阶段出现失败,主要思路是借助EGLContext共享来实现。参考了DecodeEncodeMP4库,但目前遇到的难点是如何成功地将两层(原视频+OpenGL渲染视频)或三层(原视频+OpenGL动画+另一视频)合成为一个视频。作者寻求解决共享EglContext进行视频合成的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先感谢您提供的这个强大的库。

仅仅只有一层的话,就是单独使用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,去合成一个视频。有何思路啊?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值