ios – 在视频文件上应用过滤器

ios – 在视频文件上应用过滤器,第1张

概述我想在视频播放时对视频文件应用过滤器(效果). 我正在使用@BradLarson(伟大的)GPUImage框架来做到这一点,这里的问题是框架不支持播放视频时的音频播放. 所以我有两个选择: 1)深入GPUImage代码并改变GPUImageMovie,因此它也将处理音频缓冲区.这需要知道同步音频和视频帧,不幸的是我没有.我看到一些黑客试图用AVAudioPlayer播放音频,但是有很多同步问题. 我想在视频播放时对视频文件应用过滤器(效果).

我正在使用@Bradlarson(伟大的)GPUImage框架来做到这一点,这里的问题是框架不支持播放视频时的音频播放.

所以我有两个选择:

1)深入GPUImage代码并改变GPUImageMovIE,因此它也将处理音频缓冲区.这需要知道同步音频和视频帧,不幸的是我没有.我看到一些黑客试图用AVAudioPlayer播放音频,但是有很多同步问题.

2)使用CoreImage框架而不是GPUImage.

所以我想看看使用本机iOS CoreImage和CIFilter来完成这个工作的第二个选项.

问题是,我没有找到任何关于CIFilter如何执行此 *** 作的示例,如何对文件的视频应用过滤器?

我必须使用AVAssetReader来读取视频并处理每个帧吗?如果是这样,我回到了我第一个同步音频和音频的问题.视频.
还是有办法直接在视频或预览图层上应用过滤器链?

欣赏任何帮助:)

解决方法 仅使用您正在使用的GPUImage框架…
那是迄今为止最好的视频过滤器框架.通过框架 https://github.com/BradLarson/GPUImage的文档滚动页面,您将找到可用的过滤器的详细信息…

这个过滤器被应用在视频上并写入你必须使用GPUImageMovIEWriter类的视频…它自动处理音频..

你不必维护它…使用GPUImageMovIEWriter的shouldPassthroughAudio属性,它将自己管理音频.

使用本教程帮助http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework

这里是我使用GPUImage框架裁剪视频的代码,编辑后存储不被删除.

NSURL * vIDeoUrl = [selectedAsset defaultRepresentation] .url;

GPUImageMovIE *movIEUrl = [[GPUImageMovIE alloc] initWithURL:vIDeoUrl];self.cropFilter = [[GPUImageCropFilter alloc] initWithCropRegion:vIDeoArea];movIEUrl.runBenchmark = YES;movIEUrl.playAtActualSpeed = YES;[movIEUrl addTarget:self.cropFilter];//Setting path for temporary storing the vIDeo in document directoryNSArray *paths = NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMask,YES);Nsstring *documentsDirectory = [paths objectAtIndex:0];Nsstring *myPathDocs =  [documentsDirectory stringByAppendingPathComponent:                         [Nsstring stringWithFormat:@"CroppedVIDeo-%d.mov",arc4random() % 1000]];NSURL *movIEURL = [NSURL fileURLWithPath:myPathDocs];AVURLAsset *asset = [AVURLAsset URLAssetWithURL:vIDeoUrl options:nil];AVAssetTrack *vIDeoAssetTrack = [[asset tracksWithMediaType:AVMediaTypeVIDeo] objectAtIndex:0];CGAffinetransform vIDeotransform = vIDeoAssetTrack.preferredtransform;movIEWriter = [[GPUImageMovIEWriter alloc] initWithMovIEURL:movIEURL size:CGSizeMake(vIDeoAssetTrack.naturalSize.wIDth,vIDeoAssetTrack.naturalSize.height)];[_cropFilter addTarget:movIEWriter];movIEWriter.shouldPassthroughAudio = YES;movIEUrl.audioEnCodingTarget = movIEWriter;[movIEUrl enableSynchronizedEnCodingUsingMovIEWriter:movIEWriter];[self.movIEWriter startRecordinginorIEntation:vIDeotransform];[self.movIEWriter startRecording];[movIEUrl startProcessing];__block BOol completeRec = NO;__unsafe_unretained typeof(self) weakSelf = self;[self.movIEWriter setCompletionBlock:^{    [weakSelf.cropFilter removeTarget:weakSelf.movIEWriter];    [weakSelf.movIEWriter finishRecording];    [movIEUrl removeTarget:weakSelf.cropFilter];    if (!completeRec)    {        [weakSelf vIDeoCropDoneUrl:movIEURL];        completeRec = YES;    }}];
总结

以上是内存溢出为你收集整理的ios – 在视频文件上应用过滤器全部内容,希望文章能够帮你解决ios – 在视频文件上应用过滤器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1112511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存