我非常沮丧,因为从最近两天开始我正在寻找编辑视频帧并用编辑的帧同时替换它们(帧实际时间),但我无法做到这一点。 我已经看到了很多stackoverflow的链接,但这并不适合我的要求 - iFrame提取器无法正常工作。 Get image from a video frame in iPhone
同时,我虽然提取所有帧并将其保存在带有帧的字典数组中并且尊重时间,但是当我从运行视频中获得帧时,然后在编辑之后我将针对实际帧运行循环,并且时间和我将匹配捕获的实际时间(从视频运行的编辑帧)帧,如果有,则用编辑的帧替换实际帧,然后再次从所有帧写入视频。
但这样做我用过 - Get all frames of Video IOS 6
但是在提取一些图像后它会崩溃。 我写了这样的代码
-(void)editMovie:(id)sender
{
float FPS=1;
NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"IMG_0879" ofType:@"MOV"];
NSURL *videoURl = [NSURL fileURLWithPath:videoPath];
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURl options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.requestedTimeToleranceAfter = kCMTimeZero;
generator.requestedTimeToleranceBefore = kCMTimeZero;
for (Float64 i = 0; i < CMTimeGetSeconds(asset.duration) * FPS ; i++){
@autoreleasepool {
CMTime time = CMTimeMake(i, FPS);
NSError *err;
CMTime actualTime;
CGImageRef image = [generator copyCGImageAtTime:time actualTime:&actualTime error:&err];
UIImage *generatedImage = [[UIImage alloc] initWithCGImage:image];
[self saveImage: generatedImage atTime:actualTime]; // Saves the image on document directory and not memory
CGImageRelease(image);
}
}
}
-(void)saveImage:(UIImage*)image atTime:(CMTime)time
{
float t=time.timescale;
NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];
[dict setObject:image forKey:@"image"];
[dict setObject:[NSString stringWithFormat:@"%f",t] forKey:@"time"];
[arrFrame addObject:dict];
NSLog(@"ArrayImg=%@",arrFrame);
}
我的要求是 - &gt;&gt;&gt;
如果你们都有,请给我任何一个例子,我已经从堆栈流程或其他网站的给定链接下载了很多项目或示例,但没有一个完美甚至满足我20%的要求。
如果你有,请给我任何一个例子或想法。
我将不得不向你致谢,提前致谢