在C#中渲染图像序列以制作视频

时间:2009-07-11 04:24:22

标签: c# video jpeg compression

我有一系列jpg图像,我正在捕捉并渲染到屏幕上以创建视频。

我正在使用JpegBitmapDecoder从MemoryStream解压缩图像,并通过在Image控件上设置Source来渲染它。这似乎工作正常,但处理器开销很高。这些图像是1280x720,运行速度为30fps,我几乎无法跟上我的电脑(双核2.8Ghz)。以更高的分辨率运行会导致我丢掉帧。我想尝试降低cpu利用率。

花费的大部分时间似乎都在解码中(仅在我的机器上解码的简单基准测试表明我可以解码大约40fps)。有没有人知道是否有更快的解码器可用(DirectX?DirectShow?我可以卸载到视频卡吗?)

至于渲染,似乎Image控件不是为这种类型的使用而设计的(我实际上对它起作用感到惊讶,我只是尝试了它,因为它很容易做到)。是否有另一种方法来渲染可能更快的单个帧?

1 个答案:

答案 0 :(得分:1)

听起来你在同时解码和调整jpeg的大小。调整大小也很昂贵。尝试分离解码和调整大小(使用最便宜的算法)jpegs。使用FreeImage和“JPEG_FAST”进行解压缩,然后使用“FILTER_BOX”调整大小。

为了展示,TinyPTC简单快捷。 (DirectDraw的包装)它是C,但是编写一个包装器并编译到你可以引用的dll非常容易。