[問題] 用mmreader讀影片但記憶體不足

看板MATLAB作者 (故事的最後...)時間13年前 (2013/01/21 22:46), 編輯推噓2(2030)
留言32則, 3人參與, 最新討論串1/1
各位板友你們好 之前有在板上問過有關Matlab該如何讀wmv檔的問題 板友們是推薦mmreader和VideoReader(2012版新增)這兩個function 用在時間不長,或是解析度不高的影片上的話是ok 但如果影片資料過大就很容易佔滿記憶體 使得用影片無法讀進Matlab中 想請問如果碰上這種狀況時,有什麼好方法能夠解決呢? 謝謝。 ---------------------------------------------------------------------- *補充說明: 我的應用是這樣的:先將影片讀進來做處理,之後再存回影片 但我現在碰上的問題是用mmreader讀進來的資料就過大 或是在處理過程中會導致資料量過大、記憶體不足的情況 主要不是轉存的問題 所以我的疑問就在於 像這種要對影片做處理,並且還需要保持整個影片的架構的方式 如果碰上記憶體不足的情況時 大家會建議怎麼做呢?例如:分段處理之後再合併 畢竟要把整部影片都讀進來再做處理有點不太實際 謝謝。 PS. 我的後續動作是將影片轉成frame,之後再做處理 因為是醫學相關的應用,所以資料最好是保持原始內容,所以才用直接讀檔的方式 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.103.41 ※ 編輯: skyzer 來自: 140.123.103.41 (01/21 22:49)

01/22 00:58, , 1F
有軟體可以直接將影片轉成圖片阿...
01/22 00:58, 1F

01/22 01:18, , 2F
用軟體轉圖片的話還要考慮轉換過程是否有對data做處理 例如
01/22 01:18, 2F

01/22 01:19, , 3F
wmv轉成jpg的話因為格式不相同 轉出來的data可能有經過壓縮
01/22 01:19, 3F

01/22 01:20, , 4F
而造成原始資料的喪失 為了能保持原本的資料所以才用直接讀
01/22 01:20, 4F

01/22 01:20, , 5F
的方式
01/22 01:20, 5F

01/22 04:47, , 6F
video本身就被壓縮過; 如果只是不想再轉存圖檔多壓一次,
01/22 04:47, 6F

01/22 04:48, , 7F
直接把mmreader的object內的影像資料另外轉存就好.
01/22 04:48, 7F

01/22 04:49, , 8F
matlab help裡面已經附了該如何抓出單一frame的範例碼.
01/22 04:49, 8F

01/22 04:49, , 9F
轉存時可以存bmp,這樣就不用擔心被多壓一次.
01/22 04:49, 9F

感謝您的回答, , 10F
感謝您的回答, 10F

但我主要的困難比較不是在轉存的部份, , 11F
但我主要的困難比較不是在轉存的部份, 11F

詳細內容我新增在原文後面的補充說明內, , 12F
詳細內容我新增在原文後面的補充說明內, 12F

謝謝你。, , 13F
謝謝你。, 13F
※ 編輯: skyzer 來自: 140.123.103.41 (01/22 08:44)

01/22 11:11, , 14F
各frame拆成bmp是沒有問題的,跑多少讀多少即可.
01/22 11:11, 14F

01/22 11:11, , 15F
再來,你要算一下你需要的memory有多少.
01/22 11:11, 15F

01/22 11:14, , 16F
假設你的video是320*480的mpeg-1,那麼每frame就會有
01/22 11:14, 16F

01/22 11:16, , 17F
320*480*3 = 460K, 若30 frame/sec, 一秒就有約14MB.
01/22 11:16, 17F

01/22 11:19, , 18F
如果是HD,那麼在30frame/sec下,每秒需要的memory逾100MB
01/22 11:19, 18F

01/22 11:19, , 19F
這樣搞下去,記憶的的部分多半會無解; 轉存成BMP分批讀
01/22 11:19, 19F

01/22 11:20, , 20F
就是你說的"保持原樣",若有疑問可以找video processing
01/22 11:20, 20F

01/22 11:20, , 21F
的相關資料去確認.
01/22 11:20, 21F

01/22 16:15, , 22F
可是這樣會有一堆bmp檔說...解析度大約是1000x1000 這樣弄
01/22 16:15, 22F

01/22 16:16, , 23F
記憶體不夠本來就很正常 所以才想問有沒有好的處理方式呀
01/22 16:16, 23F

01/22 16:19, , 24F
我對轉bmp檔沒有疑問呀@@" 但輸出希望是影片檔或是mat
01/22 16:19, 24F

01/22 16:20, , 25F
才想知道有沒有什麼串接處理的方法 謝謝
01/22 16:20, 25F

01/22 16:21, , 26F
轉成bmp吧. 除了花硬碟花迴圈之外什麼都不花,工程上來說
01/22 16:21, 26F

01/22 16:22, , 27F
不容易找到比這個更方便廉價的解.
01/22 16:22, 27F

01/22 16:39, , 28F
看看avifile, addframe之類的東西對你有無幫助吧. :)
01/22 16:39, 28F

01/22 16:41, , 29F
請問Y大 那轉成一堆bmp檔後能夠結合回影片檔嗎?
01/22 16:41, 29F

01/22 16:41, , 30F
那兩個我會看看的 謝謝你
01/22 16:41, 30F

01/22 20:53, , 31F
你看完avifile的範例程式碼就知道了. :)
01/22 20:53, 31F

01/22 22:24, , 32F
原來如此 謝謝你
01/22 22:24, 32F
文章代碼(AID): #1G_LIkFX (MATLAB)
文章代碼(AID): #1G_LIkFX (MATLAB)