2017-08-21 23 views
2

我有一些時間序列數據,我想創建到電影中。數據可以是2D(約500x10000)或3D(500x500x10000)。對於2D數據,電影幀是使用plot的簡單線圖,對於3D數據,我們可以使用surf,imagesc, contour等。然後我們在MATLAB中使用這些幀創建視頻文件,然後使用ffmpeg壓縮視頻文件。使用MATLAB和ffmpeg快速創建電影

要做到這一點,人們會嘗試不呈現所有的圖像顯示,也不會將數據保存到磁盤,然後在過程中再次讀取它。通常,人們會使用getframeVideoWriter在MATLAB中創建電影,但如果試圖不將數字顯示在屏幕上,它們似乎很容易變得棘手。有些人甚至建議以隱藏圖形繪製圖形,然後將它們作爲圖像保存爲.png文件,然後使用ffmpeg(例如x265編碼器將其壓縮到.mp4)壓縮它們。但是,在我的iMac中保存imagesc的輸出首次爲3.5秒,之後爲0.5秒。我還發現,將這麼多文件保存到磁盤時速度不夠快,只能要求ffmpeg再次讀取它們。有人可能hardcopy的數據爲this,但我不確定它是否工作,無論繪圖方法如何(例如,plot,surf等),以及如何以最少的磁盤訪問將數據傳輸到ffmpeg

這與this類似,但immovie太慢。這篇文章3是類似的,但主張將圖像寫入磁盤然後讀取它們(慢IO)。

回答

0

也許你正在試圖做的是做同樣的那種surf,或imagesccontour正在做工作,然後將其寫入直接文件到您的數據轉換成圖像,這將讓所有的內存中的數據直到寫入需要。

我有真正的圖像,還可以在這裏工作一點經驗: 我看到調用imshow花了很多時間,但改變由imshow函數創建一個預置圖形的CData前後花了5毫秒,所以,也許你可以使用任何你喜歡的功能設置一個數字,然後更新底層的XData,YData等,以便該數字以相同的方式更新?

祝你好運!

+0

不能相信你實際上挖了這個幾乎死了的帖子。太好了!你有沒有嘗試實施你的建議,看看它是否有效? – hyiltiz