由于图像数量庞大,我需要大量内存。那么,运行Vista 64位的1 TB硬盘和12 GB四核Intel Xeon系统正在解决这些内存需求。但除非创建一个工具来支持64位,否则它可能会在加载5000个图像中的800个之后窒息。所以我需要一个可以做到这一点的工具。
电影格式并不重要。只要图像质量保持很高,压缩也不会。 (而且有一个原因,我使用了这么大的分辨率!)无损压缩是首选。我的系统足够快,以后再播放电影,所以我不担心它的速度。但是,图像质量是这里最重要的因素。
到目前为止,我已经提出了两个选择: 1)我找到了一些可以处理这么多数据的免费工具。 (免费或非常便宜。) 2)我自己写这样一个工具......
选项1在这里有点不合适。此外,作为一名软件工程师,我的手只是抽搐自己写的!在C#中,最好没有第三方库。所以我的问题: - 自己从哪里开始写这个?
答案 0 :(得分:10)
如果你在Windows上,你也可以查看virtualdub。 http://www.virtualdub.org/
它可以通过bmps,pngs等制作AVI。
答案 1 :(得分:9)
FFMPEG能够从一系列图像文件创建电影文件,这个指向其手册的链接显示了一个例子:
http://ffmpeg.org/ffmpeg-doc.html#SEC5
至于创建没有第三方库的programaticcaly的电影文件......这将会更加困难。很多电影格式非常复杂,如果没有现有的库就可以创建一个非常痛苦(除非我误解了你的问题而你实际上并没有询问创建实际的编码器)。
如果我没有误解你的问题,那么做一个基于YUV的电影编解码器的简单实现可能是可行的。 HuffYUV是我所知道的,可能不会太具挑战性。
答案 2 :(得分:6)
两件事:
有几种解决方案可供考虑:
您不关心尺寸,但做关心质量。我要问的第一件事是:你真的真的不在乎尺寸吗?大多数视频格式(特别是H.264)将以极低的文件大小(10倍)为您提供卓越的品质。你几乎无法区分它们。是的,您的内容是高清,但电视或蓝光的高清内容也是压缩的(使用H.264或VC-1),对其他人来说已经足够了。因此,我会认真考虑这个选项,因为它使其余部分变得更加容易。
如果您愿意,您可以随时使用无损视频格式,例如HuffYUV。这至少会为您提供一些压缩,同时将视频数据的大小减半(或更多)。
正如我所说,通过使用编码视频格式,您会失去透明度。如果你想保持透明度,而你仍然不关心文件大小,为什么不保留PNG并在应用程序中将它们显示为非常快速的幻灯片?如果您唯一的问题是一次将所有PNG加载到内存中的内存要求......请不要这样做。读取前面几帧(固定数量或内存允许),一旦显示一帧,将其从内存中删除并提前读取新帧。这样你就可以保持完美的质量和恒定的内存要求。唯一的问题是你的磁盘和处理器需要能够跟上每秒读取30个PNG的速率(或者你的帧速率)。
此外,如果5000个单独的图像文件太难以处理,您可以将它们全部包装成一些自定义文件格式。 ZIP文件会以简单的便携式格式呈现,或者您可以自己动手。
答案 3 :(得分:2)
你可以用mencoder做你想做的事:
以下是该文档的链接: Encoding from multiple input image files (JPEG, PNG, TGA, etc.)
关于透明度:我认为没有支持透明的视频编解码器,所以你在这里运气不好......
答案 4 :(得分:1)
或者 - 如果你在Windows上 - 只需使用Movie Maker。
它需要相当大的RAM和处理能力,但比VirtualDub更直观,并允许您添加一些简单的效果和标题。