假设您有一个20秒的视频(可能是用设备相机拍摄的),并且想在视频中添加一个叠加层。
(叠加层只是一个普通的光栅图像,即Android Image
(doc)。)
您要创建一个新视频,并将覆盖图作为视频图像的一部分,并保存该视频。
实际上,可以使用MediaCodec SDK来完成这项工作吗?
https://developer.android.com/reference/android/media/MediaCodec
过去,通常会使用FFMPEG来解决此问题,但这很麻烦而且很慢。
MediaCodec在这里可行吗?
由于它是“新的”,我只是找不到关于此的任何信息.....
答案 0 :(得分:3)
这可以通过MediaCodec实现。 首先,请看一下DecodeEditEncode示例from here
此示例显示了如何使用OpenGL ES着色器调整视频的大小。您要做的是也使用OpenGL ES着色器在视频上渲染叠加层。
MediaCodec can be found here
上的示例的另一个很好的来源在这里您可以找到一些有关如何使用基本渲染技术的示例。看一下硬件缩放工具练习器。
当视频部分启动并运行时,这可能是真正的斗争开始的地方,因为在OpenGl ES中没有呈现文本的标准方法。我可能只是将文本绘制到Canvas上并使用它来制作纹理,虽然可能很慢。
如果您有静态叠加层(例如水印),则可以事先创建它并作为资源来运送。