在我的应用程序中有录制视频的功能,我想在录制的视频中添加时间和日期详细信息。
我可以添加它在应用程序中运行但我想要做的是如果我在照片应用程序中导出该视频或通过电子邮件发送该视频,而不是日期和时间应该在那里。
我从apple检查了这个示例代码,但是在这个文本中可以是静态的,它将始终保持相同。
任何人都可以指导我或任何链接吗?如何在视频中添加时间戳详细信息..
感谢您的帮助。
答案 0 :(得分:2)
你可以使用Brad Larson的GPUImage Class,它允许你根据你的要求为图像和视频添加过滤器。我刚刚在我的一个项目中实现了你要求的确切内容。
我所做的是将UILabel用作GPUImageUIElement
并将其添加到GPUImageNormalBlendFilter
。我用每个回调更新了标签文本,它就像一个魅力。
以下是代码:
filterView = [[GPUImageView alloc] initWithFrame:self.videoRecordView.frame];
videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset1920x1080 cameraPosition:AVCaptureDevicePositionBack];
movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(1920,1080)];
[self.view addSubview:filterView];
movieWriter.encodingLiveVideo = YES;
movieWriter.encodingLiveVideo = YES;
videoCamera.audioEncodingTarget = movieWriter;
GPUImageNormalBlendFilter *blendFilter1 = [[GPUImageNormalBlendFilter alloc] init];
UILabel *timeLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 635, 768.0f, 50.0f)];
timeLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:fontSize];
timeLabel.textAlignment = NSTextAlignmentCenter;
timeLabel.backgroundColor = [UIColor clearColor];
timeLabel.textColor = [UIColor whiteColor];
uiElementInput = [[GPUImageUIElement alloc] initWithView:timeLabel];
[uiElementInput addTarget:blendFilter1];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"MMMM dd, yyyy hh : mm : ss a"];
[blendFilter1 addTarget:filterView];
[blendFilter1 addTarget:movieWriter];
[videoCamera addTarget:blendFilter1];
__unsafe_unretained GPUImageUIElement *weakUIElementInput = uiElementInput;
[filter setFrameProcessingCompletionBlock:^(GPUImageOutput * filter, CMTime frameTime){
timeLabel.textColor =[UIColor whiteColor];
float sizefont =[[[NSUserDefaults standardUserDefaults]objectForKey:KfontSize] floatValue];
timeLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:(sizefont)? sizefont:30];
NSDate * originalDate = [NSDate dateWithTimeIntervalSinceNow:interval];
NSString *timeString=[dateFormatter stringFromDate:originalDate];
timeLabel.text = [NSString stringWithFormat:@"%@", timeString];
[weakUIElementInput update];
}];
我知道问题已经过时但可能对某人有所帮助,因为我花了一段时间才发现这个问题。
答案 1 :(得分:1)
您链接的示例显示了如何获得90%的方式。最后一步是查看AVVideoCompositionCoreAnimationTool的文档。此类允许您向视频添加任何核心动画。如何执行此操作是将动画添加到CALayer。
如果您使用CATextLayer,则可以为字符串属性设置动画。