Сотни кадров занимают много памяти.При разрешении 720p каждый кадр YUV занимает ~ 1,3 МБ;в 1080p они занимают 3 МБ каждый.
Таким образом, 10 секунд буферизации израсходуют 390 МБ при 720p, 900 МБ при 1080p.Это может вызвать проблемы у вас на устройствах с меньшим объемом памяти.
Вы можете использовать пару ImageReader и ImageWriter, скорее всего, хотя выбор правильного формата сложен.YUV_420_888 может работать, но технически TextureView не гарантирует их принятия (но будет на многих, возможно, на всех устройствах).Поэтому, если YV12 доступен, это может быть лучше.
Затем создайте ImageReader и ImageWriter с этим форматом;для ImageWriter, дайте ему поверхность из TextureView.Для ImageReader передайте его Surface на устройство камеры.
Затем, когда новое изображение станет доступным из ImageReader, получите его и скопируйте его содержимое (со всех 3-х плоскостей) в круговой буфер.Как только ваш буфер заполнится, начните копировать кадры из него в ImageWriter.
Теоретически вы можете буферизовать кадры в самом ImageReader без копирования, но он имеет максимум около 64 кадров, которые он может поставить в очередь внутриего очередь.Этого далеко не хватит на 10 секунд.