Временная метка кадра AVCaptureSession и AVCaptureMovieFileOutput

Я записываю фильм с AVCaptureSession и AVCaptureMovieFileOutput. Я также записываю данные ускорения и пытаюсь выровнять данные ускорения с видео.

Я пытаюсь выяснить, как начать запись видеофайлов. Я делаю следующее:

currentDate = [NSDate date];
[output startRecordingToOutputFileURL:fileUrl recordingDelegate:self];

Однако, согласно моим тестам, видеозапись начинается за 0,12 секунды до начала вызоваRecordingToOutputFileURL. Я предполагаю, что это связано с тем, что различные видеобуферы уже заполнены данными, которые добавляются в файл.

В любом случае, чтобы получить фактический NSDate первого кадра видео?

Ответ 1

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

CMTime captureStartTime = nil;

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { 

      if !captureStartTime{ 
         captureStartTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
      }
  // do the other things you want
 }