在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非常容易。
- 使用BsonRepresentation(BsonType.ObjectId)与BsonId对比ObjectId来装饰C#中的属性之间的区别
- 又一个System.Runtime.InteropServices错误
- 如何在asp.net中获取当前的Windows用户?
- 如何在ASP.NET中允许多种身份validation方法?
- Outlook中没有应用程序退出事件?
- 在C#app中运行Java(.jar)应用程序
- Xamarin.UITesting NU1201错误:Android 8.1与.NETFramework 4.6.1不兼容
- 如何强制jqGrid 4.10.1-pre编码’字符总是
- Visual Studio C# – 找不到SQLite.Interop.dll