Как я могу приостановить запись видео с iPhone SDK? - PullRequest
2 голосов
/ 23 апреля 2011

Я вижу, что есть приложение под названием iFile с функцией паузы во время записи видео. Как они это делают? Я попытался использовать классы AVMutableComposition, и когда пользователь делает паузу, я обрезаю новое видео и затем объединяю видео в конце, однако время обработки для объединения видео не желательно.

Может кто-нибудь дать мне другие хорошие идеи о том, как это сделать? Я заметил, что способ iFile очень прост.

Спасибо

1 Ответ

1 голос
/ 24 апреля 2011

Вот несколько идей. Я не пробовал ни один из них.

Если вы используете AVAssetWriter для записи захваченного изображения, вы можете просто отбросить кадры во время паузы. Вам нужно будет отслеживать последнюю использованную метку времени презентации (PTS). Затем вам нужно рассчитать PTS следующего изображения на основе этой последней отметки времени, когда вы снова начнете запись. Делать это со звуком также может быть немного сложнее.

Альтернативным методом будет использование пустых правок. Я не уверен, как вы могли бы вставить пустое редактирование в середине дорожки, используя AVAssetWriter. Я знаю, что вы можете вставить их в начале и в конце. Используя AVMutableCompositionTrack, вы можете использовать insertEmptyTimeRange: где временной диапазон построен как

CMTime delta = CMTimeSubtract(new_sample_time, last_sample_time)
CMTimeRangeMake(last_sample_time, delta)

Где new_sample_time - это время первого сэмпла после приостановки, а last_sample_time - время последнего сэмпла перед паузой. Опять же, со звуком это может быть немного сложно, так как буфер для аудио обычно содержит 1024 семпла. CMTime, возвращаемое CMSampleBufferGetPresentationTimeStamp, является временем первого образца.

Надеюсь, это поможет или приведет вас к решению.

...