Как я могу приостановить запись видео с iPhone SDK?
Я вижу, что есть приложение под названием iFile с функцией паузы во время записи видео. Как они это делают? Я попытался использовать классы AVMutableComposition и, когда пользователь делает паузу, я обрезаю новое видео, а затем объединяю видео в конце, однако время обработки для объединения видео не желательно.
Может кто-нибудь дать мне другие хорошие идеи о том, как это сделать? Я заметил, что способ iFile очень прост.
Спасибо
1 ответ
Вот несколько идей. Я не пробовал ни один из них.
Если вы используете 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, является временем первого образца.
Надеюсь, это поможет или приведет вас к решению.