Запись видео в кольцевой буфер на Android

Я ищу лучший способ (если есть ...) для захвата непрерывного видео в кольцевой буфер на SD-карте, позволяющий пользователю фиксировать события после того, как они произошли.

Стандартный API видеозаписи позволяет вам просто записывать прямо в файл, и когда вы достигнете предела (установленного пользователем или емкости SD-карты), вам придется остановить и перезапустить запись. Это создает окно длительностью до 2 секунд, в котором запись не выполняется. Это то, что уже делают некоторые существующие приложения, такие как DailyRoads Voyager. Чтобы свести к минимуму вероятность пропуска чего-то важного, вы можете установить время разделения на какое-то большое значение, например, 10 минут, но если событие происходит ближе к концу этого временного интервала, вы тратите пространство, сохраняя 9 минут ничего в начале.

Итак, моя идея на данный момент такова: у меня будет большой файл, который будет служить буфером. Я использую некоторый код, который я нашел, чтобы захватить кадры и сохранить их в файл самостоятельно, обернувшись в конце. Когда пользователь хочет сохранить какую-то часть, я отмечу ее указателями на начало и конец в буфере. Запись может продолжаться, как и раньше, пропуская области, отмеченные для сохранения.

После остановки записи или, возможно, во время этого в фоновом потоке (в зависимости от скорости телефона / карты) я скопирую отмеченную область в другой файл и сниму защиту от перезаписи.

Главный вопрос, если вас не интересуют детали выше: Кажется, я не могу найти способ конвертировать отдельные кадры в видеофайл в Android SDK. Является ли это возможным? Если нет, то есть ли какие-нибудь доступные библиотеки, возможно, в собственном коде, которые могут это сделать?

Меня действительно не волнует большой буфер несжатых кадров, но экспортируемые видео должны быть сжаты в формате, удобном для Android.Но если есть способ сжать буфер, я бы хотел об этом услышать.

Спасибо.

10
задан lacop 23 January 2012 в 15:26
поделиться