我正在研究一次顯示多個視頻的應用程序。這些視頻以充滿圖像文件的目錄形式存儲。對於每個幀號,最多有9個必須從磁盤加載的圖像。我想實現圖像的緩存和預讀。這很簡單,但複雜的是文件系統(有時是網絡FS)遠不足以顯示每個圖像。所以readahead應該選擇它將要加載的幀,並且只對這些圖像發出read()請求。此外,如果可以考慮哪些圖像已被緩存,在決定要裝入哪些幀時最好。不可靠的緩存和預讀視頻幀
我想出了一個貪婪的算法,它會好起來的,但我想知道這是否是一個已經研究過的問題,並且有更好的/最佳的算法。
我假設時間是根據幀速率測量的,而不是秒數,以便更容易僞代碼。
load_time_per_image = how long it takes to load an image
images_per_frame = the number of images to display simultaneously
worst_time = images_per_frame * load_time_per_image
def decide_next_frame_to_load:
for each frame from now to now + worst_time:
loadable = (frame - now)/load_time_per_image
if number_of_images_cached(frame) > images_per_frame - loadable:
# this frame is the first one it's possible to load in time.
return frame
有人有建議嗎? 感謝您的幫助! -Thomas
畢竟這是一個小世界... – 2009-04-08 21:09:59