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

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

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

花费的大部分时间似乎都在解码中(单独解码的简单基准测试在我的机器上显示我可以解码大约40fps)。 有谁知道是否有更快的解码器可用(DirectX?DirectShow?我可以卸载到video卡的东西?)

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

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

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