2012-12-03 3 views
11

AVCaptureSession 및 AVCaptureMovieFileOutput을 사용하여 동영상을 녹화하고 있습니다. 또한 가속 데이터를 기록하고 가속 데이터를 비디오와 정렬하려고합니다.AVCaptureSession 및 AVCaptureMovieFileOutput 프레임 타임 스탬프

저는 비디오 파일 녹음이 시작된 시간을 얻는 방법을 알아 내려고하고 있습니다. 나는 다음을 수행 오전 : startRecordingToOutputFileURL에 대한 호출이 이루어지기 전에

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

는하지만, 내 테스트에 따르면, 비디오 녹화는 0.12 초를 시작합니다. 나는 다양한 비디오 버퍼가 이미 파일에 추가되는 데이터로 가득차 있기 때문에 이것이라고 가정하고 있습니다.

어쨌든 비디오의 첫 번째 프레임의 실제 NSDate를 가져올 수 있습니까?

+0

당신은 NSTimer로 시험해 보았 느냐? – kumar

+0

원시 프레임 샘플 데이터를 캡처하도록 출력 채널을 설정하면 각 프레임의 타임 스탬프에 액세스 할 수 있습니다. 그러나 AVCaptureSession을 영화 출력과 원시 프레임 샘플 데이터로 구성 할 수 없었으므로 영화 파일에서 처음 녹화 된 프레임의 정확한 타임 스탬프를 얻는 방법을 알지 못합니다. – algal

+0

나는 단지 당신에게 몇 가지 힌트를 주겠다. 그러나 나는 진짜 대답을 가지고 있지 않다. AVFoundation을 많이 사용합니다 KVO "실시간"으로 속성이 변경되지 않았습니까? 동영상 파일의 AVItemMetadatas를 인쇄하려 했습니까? – Andrea

답변

0

질문을 올바르게 받으면 첫 번째 프레임이 기록 된 시간 스탬프를 알고 싶습니다. 당신은 시도 할 수 있었다

CMTime captureStartTime = nil; 

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

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

시도해 보니 동영상 파일 출력을 캡처 할 수 없었습니다. 샘플 버퍼 타임 스탬프와 동영상 파일을 모두 캡처하는 실제 예제가 있습니까? – algal