Я ищу лучший способ (если есть ...) для записи непрерывного видео в кольцевой буфер на SD-карте, позволяющий пользователю записывать события после того, как они произошли.
Стандартный API для записи видео позволяет вам просто записывать непосредственно в файл, а когда вы достигнете предела (установленного пользователем или емкости SD-карты), вам придется остановить и перезапустить запись. Это создает окно длиной до 2 секунд, в котором запись не выполняется. Это то, что уже делают некоторые существующие приложения, такие как DailyRoads Voyager. Чтобы свести к минимуму вероятность пропуска чего-то важного, вы можете установить время разделения на что-то длинное, например, 10 минут, но если событие происходит ближе к концу этого промежутка времени, вы теряете пространство, сохраняя 9 минут ничего в начале.
Итак, моя идея на данный момент такова: у меня будет большой файл, который будет служить буфером. Я использую некоторый код, который я нашел, чтобы захватить кадры и сохранить их в файл самостоятельно, оборачиваясь в конце. Когда пользователь хочет сохранить какую-то часть, я отмечу ее указателями на начало и конец в буфере. Запись может продолжаться, как и раньше, пропуская регионы, отмеченные для сохранения.
После того, как запись остановлена или, может быть, во время этого в фоновом потоке (в зависимости от скорости телефона / карты), я скопирую отмеченную область в другой файл и сниму защиту от перезаписи.
Главный вопрос, если вас не интересуют вышеприведенные детали: Мне кажется, я не могу найти способ конвертировать отдельные кадры в видеофайл в Android SDK. Является ли это возможным? Если нет, есть ли доступные библиотеки, возможно в нативном коде, которые могут это сделать?
Меня не волнует большой буфер несжатых кадров, но экспортированные видео должны быть сжаты в формате, удобном для Android. Но если есть способ сжать буфер, я бы хотел услышать об этом.
Спасибо.