我基本上有一个字节矩阵。每行(即 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(使用前将#替换为@)