Это предназначено для работы в режиме реального времени?
Некоторые из худших видеоредакторов, которые я видел, «индексируют» каждый кадр, сохраняя каждый кадр в своем собственном файле изображения. Вы застряли с использованием этого механизма хранения? Было бы значительно более эффективно, если исходные видео были сохранены в видеоформате (по одному на файл), и для каждого видео был индекс (в основном смещение файла для каждого кадра). Затем вы можете использовать механизм кэширования операционной системы, чтобы повысить производительность.
Еще одна вещь, которую вы можете рассмотреть, хотя это, вероятно, не очень поможет с сетевыми файловыми системами, это хранить изображения в формате YUV. Ваше приложение, которое отображает видео, может работать быстрее (отчасти потому, что преобразование RGB-в-YUV не требуется, а часто потому, что вы можете перенести работу по рисованию изображения YUV на видеокарту), что оставляет больше времени для файловой системы Работа. Я делаю это при рисовании на дисплее X, чтобы избежать дрожания.
Что касается кэширования изображений, я бы, вероятно, использовал отдельный поток для чтения изображений с диска так быстро, как вы можете, пока основной поток собирает и представляет изображение. Основной поток может выполнять свой цикл один раз за интервал представления кадра, а отдельный поток может блокировать, когда количество буферизованных / подготовленных изображений достигает определенного порога. Видеоплееры, такие как mplayer, используют такие стратегии.