Сохранить видео за последние 30 секунд

Я хочу разработать программу, в которой пользователь может захватывать и сохранять только последние 30 секунд видео после нажатия кнопки остановки.

1) Имеем ли мы контроль над записью видео?

2) как мы можем получить только последние 30 секунд видео?


person Mitul Nakum    schedule 17.01.2010    source источник
comment
Вам помог какой-нибудь ответ? Просто нажмите на галочку, чтобы отметить это решение как принятое или проголосовать за него. И, пожалуйста, ознакомьтесь с другими вопросами, чтобы найти возможные решения. Спасибо! :) (И да, это скопировано, чтобы новые пользователи знали о системе голосования.)   -  person Henrik P. Hessel    schedule 17.01.2010
comment
Это дубликат этого вопроса: stackoverflow.com/questions/2047257/   -  person Brad Larson    schedule 17.01.2010


Ответы (3)


Если нам удастся получить изображения со скоростью 15 кадров в секунду, используя UIImagePickerController.

Затем сделайте буфер размером 15*30.

Заставьте NSMutableArray очереди удалить первый кадр, когда вы получите новый кадр, и добавьте новый кадр в конец очереди.

В конце, когда пользователь нажимает кнопку остановки. Создайте видео (используя пользовательский кодак).

Я не уверен, но это может помочь.

person Kanak Vaghela    schedule 18.01.2010

О UIImagePickerController

Класс UIImagePickerController управляет предоставляемыми системой пользовательскими интерфейсами для выбора и съемки изображений и видеороликов на поддерживаемых устройствах. Используйте этот класс, чтобы получить от пользователя один из этих типов мультимедиа. Класс управляет взаимодействиями с пользователем и сообщает о результатах этих взаимодействий соответствующему объекту делегата.

и

В дополнение к стандартному интерфейсу камеры в iPhone OS 3.1 и более поздних версиях при желании можно самостоятельно управлять взаимодействием с камерой. Вы можете предоставить настраиваемый вид наложения для отображения пользовательского интерфейса для создания изображений, а также вы можете инициировать создание изображений из своего кода. Пользовательский вид наложения может отображаться в дополнение к элементам управления по умолчанию, предоставляемым интерфейсом средства выбора изображений, или вместо них.

Но мой вопрос все еще там, как мы можем управлять продолжительностью захвата видео?

person Mitul Nakum    schedule 18.01.2010

Одним из методов является сохранение видеокадров в кольцевом буфере. Сделайте кольцевой буфер достаточно большим, чтобы хранить 30 секунд видео. С кольцевым буфером у вас есть указатель заполнения, который одновременно определяет начало и конец потока. Когда вы добавляете в буфер, вы соответственно увеличиваете указатель. Когда пользователь нажимает «стоп», вы переписываете буфер так, чтобы данные в указателе заполнения находились в начале буфера (по сути, вы вращаете все данные в буфере так, чтобы правильная точка находилась в начале). Это ваши необработанные видеоданные, представляющие последние 30 секунд. Вероятно, вам нужен счетчик, показывающий, сколько секунд было заполнено, на случай, если они нажмут кнопку «Стоп» менее чем через 30 секунд.

person Justin Smith    schedule 18.01.2010