Записывайте видео с пользовательским интерфейсом камеры, но не сохраняйте

Я использую AVCaptureFileOutputRecordingDelegate - didFinishRecordingToOutputFileAt в пользовательском интерфейсе камеры, но я не хочу переходить на этот метод, потому что видео сохраняется после завершения записи. По устаревшим причинам я не могу сохранить видео локально, затем взять его в статическом экземпляре и удалить из локального. Как я могу это сделать ?


person Ridney    schedule 25.07.2017    source источник
comment
После ответа Bluewings я попытался сделать видео из массива UIImages (на примере этого поста: stackoverflow.com/questions/40788480/), который я взял из метод captureOutput(_ CaptureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!), но он всегда сохраняет видео во временной папке, а затем удаляет его. Как я могу создать видео из [UIImage], не сохраняя его во временной папке?   -  person Ridney    schedule 26.07.2017


Ответы (1)


AVFoundation framework имеет только следующие выходные данные для сеанса захвата.

  • AVCaptureMovieFileOutput - для записи и вывода файла фильма
  • AVCaptureVideoDataOutput - обрабатывать кадры из захватываемого видео
  • AVCaptureAudioDataOuput - обрабатывать записываемые аудиоданные
  • AVCaptureStillImageOutput - для захвата вывода неподвижного изображения

Так как вы не хотите сохранять записанное видео в файл. Другим лучшим вариантом было бы использование AVCaptureVideoDataOutput и получение каждого кадра в непрерывной записи видео и создание видео из буфера изображения. Чтобы сделать заметку, в этом случае у вас не будет аудиовыхода. Опять же, мы можем добавить AVCaptureAudioDataOuput и встроить аудио отдельно в наше записанное видео. Но этот обходной путь не будет работать для более высокой частоты кадров. Поэтому лучше всего сохранить видео во временную папку и удалить его позже.

person Bluewings    schedule 26.07.2017
comment
Большое спасибо за этот ответ. - person Ridney; 26.07.2017