我编写的软件会根据图像制作视频。但是,在制作视频之前,它必须从其他图像创建图像。其中许多图像匹配。因此,为了节省处理能力并加快最终视频的创建,我想制作所有匹配的帧的副本。流程是:
例如,如果我的图像编号为0,我显然会将该图像保存到磁盘。如果唯一图像的下一个图像编号是10,那么在保存图像10之前,我会从图像0复制图像1到9。
这适用于我的Windows实例。我在Windows中的方式是这样的:
String cmd = "CMD /C for /l %f in (" + (frameToCopy + 1) + ",1," + (sameImageList.size() + (frameToCopy)) + ") do copy \"" +
outputFileName + fileName +"_" + frameToCopy + ".png\" \"" +
outputFileName + fileName + "_" + "%f.png\"";
然后我将上面的内容传递给一个调用命令行的进程,并在创建大型视频时加快了我的视频创建速度。我确定在Ubuntu中有类似的命令,然而,当我四处寻找时,我似乎无法通过在这里或其他地方搜索来找到我想要做的事情。请问Linux专家能给我一点帮助吗?
编辑清晰度 我很抱歉与我的问题混淆了。我用我编写的软件 - 使用Java编程语言制作这些图像。每次我的Java程序看到一个唯一的图像时,它会将该图像保存到磁盘。每次看到相同图像的重复时,它只会将图像编号存储在列表中。然后,下次看到唯一图像时,它会将最后一张图像的副本复制到新唯一图像所代表的数字。我正在使用Process对象来执行此操作。我发布的命令的String表示是我在Windows中所做的,我正在寻找一个在基于Unix的系统中执行完全相同操作的命令。
答案 0 :(得分:0)
我发现你的问题很不清楚,但认为以下内容可能有所帮助。假设您有第0帧,下一个唯一帧是第8帧。据我了解,您需要复制第0帧并保存为第1-7帧。您可以使用
在bash
中执行此操作
#!/bin/bash
for i in {1..7}
do
cp frame_0.png frame_$i.png
done
或者,如果文件完全相同,则不需要多次存储它们,您只需创建符号链接,这些链接只指向磁盘上的相同数据块,如下所示:
for i in {1..7}
do
ln -s frame_0.png frame_$i.png
done