Java:如何从图像数组创建电影?

2023-12-08

我基本上有一个字节矩阵。每行(即 byte[])代表一个图像。如何创建一个电影(任何格式 - avi、mpeg 等等),并将其保存为文件? 每个图像可以是以下之一:

int JPEG    Encoded formats.
int NV16    YCbCr format, used for video.
int NV21    YCrCb format used for images, which uses the NV21 encoding format.
int RGB_565 RGB format used for pictures encoded as RGB_565.
int YUY2    YCbCr format used for images, which uses YUYV (YUY2) encoding format.
int YV12    Android YUV format: This format is exposed to software decoders and applications.

只要我能创作电影,我就可以选择任何我喜欢的格式。

public void createMovie(byte[][] images) {
  // and ideas on what to write here?
}

我不需要实际的实现,只需让我知道这个想法以及我需要哪些外部库(如果我需要的话)。

在创建电影(添加一些文本)之前,我还需要编辑一些图像(字节流)。我怎样才能做到这一点?

解决方案必须是“仅限 Java”!没有外部程序,没有外部命令(但我可以使用外部罐子)。

Thanks!


解决方案似乎是使用Mencoder(或者至少,这似乎是一个半受欢迎的选择)。

这是一个专门解决问题的链接图像转电影Mencoder 中的功能。

至于在将文本编码为视频的一部分之前将文本渲染到帧上,您可以使用 Java2D 的图像操作库预先在图像顶部绘制文本例如:

  • 将图像加载到缓冲图像对象通过ImageIO 库的 .read 方法
  • Use Graphics2D 的 .drawString 方法渲染文本

这是一种方法,并且this FAQ应该帮助您开始使用 Java2D、字体渲染等方向,并提供更多资源的指示。

ImageIO 库还允许您读取/写入多种图像格式,有效地允许您从 .jpg -> BufferedImage -> .png 或任何您需要的方式转码图像(如果您愿意)在转换过程中临时存储图像文件,和/或在为转换项目导入图像时将所有图像转换为单一格式等。

根据您想要支持的输出格式的数量,您可能会执行类似的操作

public void createMovie(BufferedImage[] frames, String destinationFormat)

...其中“destinationFormat”类似于“m4v”、“mpeg2”、“h.264”、“gif”等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:如何从图像数组创建电影? 的相关文章

随机推荐