可以使用 MediaCodecSDK 为 Android 中的视频添加叠加层吗?

Fat*_*tie 1 android video-processing android-mediacodec

假设您有一个 20 秒的视频(可能是用设备相机拍摄的),并且您想在视频中添加一个叠加层。

(叠加层只是一个普通的光栅图像,即一个 Android Image( doc )。)

您想要创建一个新视频,将叠加作为视频图像的一部分,然后保存视频。

事实上,MediaCodec SDK 可以用来做这个工作吗?

https://developer.android.com/reference/android/media/MediaCodec

过去,您通常会使用 FFMPEG 来解决此类问题,但这是一团糟且速度缓慢。

MediaCodec 可以在这里使用吗?

由于它是“新的”,我无法找到有关此的任何信息.....

小智 6

这可以使用 MediaCodec 实现。首先,从这里查看 DecodeEditEncode 示例

此示例展示了如何使用 OpenGL ES 着色器调整视频大小。您想要做的是也使用 OpenGL ES 着色器在视频上渲染叠加层。

可以在此处找到有关 MediaCodec 示例的另一个很好的来源

在这里您可以找到一些关于如何使用基本渲染技术的示例。查看硬件缩放器练习器。

当您启动并运行视频部分时,这可能是真正的斗争开始的地方,因为在 OpenGl ES 中没有渲染文本的标准方法。我可能只是将文本绘制到 Canvas 并从中制作纹理,但速度可能很慢。

如果您有静态叠加层,例如水印,您可以预先创建它并作为资源发送。