我試圖從GPUImage
捕獲的視頻幀生成UIImage
。我做了很多AVFoundation
視頻工作,但我是新手使用GPUImage
。我已經subclassed
GPUImageVideoCamera
並增加了這種方法,但UIImage
總是零。如果任何人都可以告訴我我哪裏去了這麼可怕的錯誤,我會非常感激!從GPUImage視頻幀生成UIImage
- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer
{ [超級processVideoSampleBuffer:sampleBuffer]; //讓GPUImage做它的處理第一
if (!self.thumbnailGenerated)
{
CMTime timestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
NSLog(@"%f", (float)timestamp.value/timestamp.timescale);
self.thumbnailGenerated = YES;
dispatch_sync(dispatch_get_main_queue(),^
{
// generate a preview frame from the last filter in the camera filter chain
UIImage *thumbnailImage = [UIImage imageWithCGImage:[[self.targets lastObject] newCGImageFromCurrentlyProcessedOutput]];
NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Thumbnail.png"];
[UIImagePNGRepresentation(thumbnailImage) writeToFile:pathToMovie atomically:YES];
});
}
}
雖然這是理解的,有幾個問題,使得它不適合我在做什麼: 1.工作GPUImage之外,因此它不包括GPU過濾器/處理。 2.指定一個時間導致AVAssetImageGenerator從一開始就尋找AVURLAsset的媒體,即指定接近長視頻結束的時間比指定接近開始的時間花費更長的時間。 3.我已經得到了CMSampleBufferRef,並且 - 大概--GPUImage已經應用了超級調用的過濾器。 我很欣賞提示,這不是我要找的。 –