2011-02-16 4 views
5

비디오에서 이미지를 프레임으로 추출하려고합니다. 비디오는 UIImagePickerController를 사용하여 기록됩니다.UIImagePickerController : 비디오에서 이미지 캡처 받기

비디오가 녹화되면 해당 URL을 가져 와서 AVURLAsset을 사용하여로드합니다. 그런 다음 AVAssetReader 및 AVAssetReaderTrackOutput을 만들어 개별 프레임을 가져옵니다.

프레임을 CMSampleBufferRef로 가져올 때 Apple의 imageFromSampleBuffer 메서드에 전달하여 UIImage를 반환해야합니다. 내가 AVCaptureSession를 사용하여 프레임을 얻는 때이 방법은 잘 작동하지만 UIImagePickerController를 통해 녹화 된 비디오를 사용할 때 다음이 라인은 0x0으로 반환 sampleBuffer 내가 전달하는 CMSampleBufferRed입니다

CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); 

합니다.

디버거를 통해 sampleBuffer의 값을 확인했는데 ok (0x0이 아님)로 보입니다. CMSampleBufferGetImageBuffer가 0x0을 반환하는 이유가 있습니까?

또는 MOV 파일에서 단일 비디오 프레임을 추출하고 UIImage로 저장하는 다른 방법이 있습니까?

감사합니다.

답변

7

해결책을 찾았습니다. AVAssetReaderTrackOutput을 초기화 할 때 전달 된 설정에서 픽셀 형식을 설정해야합니다. 이 다른 사람 도움

NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey; 
NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA]; 
NSDictionary* videoSettings = [NSDictionary dictionaryWithObject:value forKey:key]; 

희망 :

나는 다음과 같은 설정 사전을 통과시켰다.