這是我想要做的:我試圖加載一系列位圖來顯示動畫。這意味着我需要有一個下降fps(24 fps)。我需要加載不超過10秒的動畫或大約300個位圖。由於這是一個動態壁紙,我只能手動繪製每一幀。畫布中更好的幀率繪製位圖(第2部分)?
這裏是我試過到目前爲止:
- 明顯的策略:加載每個位每幀繪製。這很慢。
- 使用緩存。我把位圖加載到一個單獨的線程中。大約20個位圖緩存連續加載到後臺。但是,我仍然表現不佳(大約10 fps)。罪魁禍首是緩慢的位圖加載。
- 我打算嘗試使用OpenGL,但後來我意識到,即使使用OpenGL,緩慢的位圖加載仍然是一個問題。對? (或者我錯了嗎?)
那麼我還可以使用其他哪些策略?下面是我的想法:如果我使用openGL,我可以使用更小的位圖(因爲它可以提供更好的縮放比例)。也許那時我可以有一個更大的緩存 - 也許說3秒。有了更大的緩存,緩慢的位圖加載不會是個問題,對吧?
其他策略?
哦,這是我目前的位圖裝載功能:
void loadNthBitmap(int i, int n) {
try {
buf = new
BufferedInputStream(assets.
open(folder+"/"
+imageList[n])
);
tmpBitmap = BitmapFactory.
decodeStream(buf);
rbitmap[i] = Bitmap.createBitmap
(tmpBitmap,
0,0,imageWidth,imageHeight,
transMatrix,false);
}
catch(IOException e) {}
}
其中imageList
是預先定義的資產清單和transMatrix
是旋轉和縮放矩陣。
一個開始。按照RockPlayer的方法,我的測試視頻速度大約爲10 fps。這種方法使用FFmpeg,NDK和OpenGL紋理。可能,我應該使用幀緩衝區。 – 2011-06-15 01:24:16
@ u-avalos感謝您的接受/讚揚。你顯然是一個非常嚴肅的編碼員。祝你的項目好運。 :-) – 2011-06-15 02:46:07
@ u-avalos在http://android.ccpcreations.com/vlw/vlw-faq的常見問題中,VLW傢伙聲稱〜24 fps @ 480x854,並且有一些編解碼器的建議。 – 2011-06-15 14:48:17