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

2022-09-01 07:01:38

我基本上有一个字节矩阵。每行(表示 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”!没有外部程序,没有外部命令(但我可以使用外部jar)。

谢谢!


答案 1

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

这里有一个链接,专门讨论Mencoder中的图像到电影功能。

至于在将文本编码为视频的一部分之前将文本呈现到帧上,您可以使用Java2D的图像处理库事先在图像上绘制文本例如:

这是一种方法,这个FAQ应该让你从Java2D,字体渲染等方向开始,并提供指向更多资源的指针。

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

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

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

...其中“目的地格式”类似于“m4v”,“mpeg2”,“h.264”,“gif”等。


答案 2

您是否听说过JMF(Java Media Framework),从示例中您可以找到此示例:从(JPEG)图像列表生成电影文件


推荐