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