AVCaptureVideoDataOutput
을 사용하여 프레임을 잡고 처리 한 다음 AVAssetWriter
을 사용하여 MOV 파일에 기록합니다. 내가 필요할 때만AVCaptureVideoDataOutput의 프레임 속도 받기
myDataOutput.minFrameDuration = someCMTime;
가 어떻게
- (void) captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
I의 특정주기에 대한 실제 프레임 시간을 얻을 수 쓰기, 즉 데이터 입력의 최소 프레임 속도를 설정하는 이해 저작자의 정확한 기간을 입력 할 수 있도록 실제 기간이 필요합니다. 나는 CMSampleBufferGetDuration(sampleBuffer)
을 사용하여 놀았지만 제한적으로 성공했습니다. 이 값을 얻는 방법에 대한 아이디어?
여기 내 현재 captureOutput 방법의 구현 : 결국
- (void) captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
if([writerInput isReadyForMoreMediaData])
{
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
if(imageBuffer){
totalTime = CMTimeAdd(totalTime, CMSampleBufferGetDuration(sampleBuffer));
if([adaptor appendPixelBuffer:imageBuffer withPresentationTime:totalTime]){
NSLog(@"frame added");
CVPixelBufferUnlockBaseAddress(imageBuffer,0);
}else{
NSLog(@"frame NOT added");
}
}else{
NSLog(@"no buffer");
}
}else{
NSLog(@"writerinput not ready");
}
}