MediaCodecSDK 能否用于在 Android 中为视频添加叠加层?
Can MediaCodecSDK be used to add overlay to video in Android?
假设您有一个 20 秒的视频(可能是用设备相机拍摄的)并且您想要在视频中添加叠加层。
(叠加层只是普通的光栅图像,即 Android Image
(doc)。)
您想创建一个新视频,将叠加层作为视频图像的一部分,并保存视频。
其实MediaCodec SDK可以用来做这个吗?
https://developer.android.com/reference/android/media/MediaCodec
以前一般会用FFMPEG来解决这样的问题,但是又乱又慢。
这里可以使用MediaCodec吗?
既然是"new"就是找不到这方面的资料.....
这可以使用 MediaCodec。
首先,看一下 DecodeEditEncode 示例 from here
此示例展示了如何使用 OpenGL ES 着色器调整视频的大小。您要做的是使用 OpenGL ES 着色器在视频上渲染叠加层。
关于 MediaCodec 示例的另一个很好的来源 can be found here
在这里您可以找到一些关于如何使用基本渲染技术的示例。查看硬件缩放器练习器。
当您打开视频部分并且 运行 时,这可能是真正的斗争开始的地方,因为在 OpenGl ES 中没有渲染文本的标准方法。我可能只是将文本绘制到 Canvas 并从中制作纹理,虽然可能很慢。
如果您有静态叠加层,例如水印,您可以预先创建它并作为资源发布。
假设您有一个 20 秒的视频(可能是用设备相机拍摄的)并且您想要在视频中添加叠加层。
(叠加层只是普通的光栅图像,即 Android Image
(doc)。)
您想创建一个新视频,将叠加层作为视频图像的一部分,并保存视频。
其实MediaCodec SDK可以用来做这个吗?
https://developer.android.com/reference/android/media/MediaCodec
以前一般会用FFMPEG来解决这样的问题,但是又乱又慢。
这里可以使用MediaCodec吗?
既然是"new"就是找不到这方面的资料.....
这可以使用 MediaCodec。 首先,看一下 DecodeEditEncode 示例 from here
此示例展示了如何使用 OpenGL ES 着色器调整视频的大小。您要做的是使用 OpenGL ES 着色器在视频上渲染叠加层。
关于 MediaCodec 示例的另一个很好的来源 can be found here
在这里您可以找到一些关于如何使用基本渲染技术的示例。查看硬件缩放器练习器。
当您打开视频部分并且 运行 时,这可能是真正的斗争开始的地方,因为在 OpenGl ES 中没有渲染文本的标准方法。我可能只是将文本绘制到 Canvas 并从中制作纹理,虽然可能很慢。
如果您有静态叠加层,例如水印,您可以预先创建它并作为资源发布。