2009-07-11 32 views
1

我有一系列jpg圖像,我正在捕獲並渲染到屏幕以創建視頻。在C#中渲染圖像序列以製作視頻

我使用JpegBitmapDecoder從MemoryStream中解壓縮圖像,並通過在Image控件上設置Source來渲染它。這似乎工作正常,但處理器開銷相當高。圖像是1280x720,運行速度爲30fps,我幾乎不能跟上我的電腦(雙核2.8Ghz)。以更高的分辨率運行會導致我丟棄幀。我想嘗試降低CPU利用率。

大部分時間花在解碼上(我的機器上的解碼器的簡單基準測試顯示我可以解碼大約40fps)。有誰知道是否有更快的解碼器可用(DirectX?DirectShow?我可以卸載到視頻卡的東西?)

至於渲染,它似乎不像Image控件是專爲這種類型的使用而設計的(我真的很驚訝它的工作原理,我只是試了一下,因爲它很容易做到)。是否有另一種方法來渲染可能更快的單幀?

+0

另一種解決方案可能是依次命名jpg,然後在VirtualDub中打開第一個,然後將其作爲視頻播放。 – 2009-07-11 14:42:07

+0

我應該更清楚。我正在流式傳輸圖像,並希望從流式傳輸的圖像中播放實時視頻。 – Dolphin 2009-07-12 00:01:35

回答

1

這聽起來像你是在同一時間解碼和調整JPEG格式。調整大小也可能很昂貴。嘗試分離解碼和調整大小(使用最便宜的算法)JPEG。使用類似FreeImage的「JPEG_FAST」解壓縮和「FILTER_BOX」來調整大小。

用於顯示,TinyPTC簡單快捷。 (一個DirectDraw的包裝)它是C,但是寫一個包裝器並編譯成你可以引用的dll是很容易的。