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