这是以前的后续跟踪,但是仅仅是相关的 question

我正在使用GPUImage库来应用过滤器到我的相机应用程序中的静态照片和视频.几乎一切都很好.我还没有解决的其余一个问题如下:

>我捕获一个GPUImageMovie
>我把它写入文件系统
>我从文件系统读取它并应用一个新的过滤器
>我将其写入文件系统中的其他URL

保存到该新URL的是具有正确持续时间但没有移动的视频.当我打的时候,它只是静止的图像,我认为视频的第一帧.只要我将任何过滤器应用于从文件系统检索到的视频,就会发生这种情况.将过滤器应用于现场录制视频工作正常.我的代码如下

任何人都可以告诉我如何修改此内容以保存整个原始视频并应用过滤器?

- (void)applyProcessingToVideoAtIndexPath:(NSIndexPath *)indexPath withFilter:(GPUImageFilter *)selectedFilter
{
    NSArray *urls = [self.videoURLsByIndexPaths objectForKey:self.indexPathFordisplayedImage];
    NSURL *url = [urls lastObject];
    self.editedMovie = [[GPUImageMovie alloc] initWithURL:url];
    assert(!!self.editedMovie);
    [self.editedMovie addTarget:selectedFilter]; // apply the user-selected filter to the file
    NSURL *movieURL = [self generatedMovieURL];
    // A different movie writer than the one I was using for live video capture.
    movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(640.0,640.0)];
    [selectedFilter addTarget:movieWriter];
    movieWriter.shouldPassthroughAudio = YES;
    self.editedMovie.audioEncodingTarget = movieWriter;
    [self.editedMovie enableSynchronizedEncodingUsingMovieWriter:movieWriter];
    [movieWriter startRecording];
    [self.editedMovie startProcessing];

    __weak GPUImageMovieWriter *weakWriter = movieWriter;
    __weak CreateContentViewController *weakSelf = self;
    [movieWriter setCompletionBlock:^{
        [selectedFilter removeTarget:weakWriter];
        [weakWriter finishRecordingWithCompletionHandler:^{

            NSArray *urls = [weakSelf.videoURLsByIndexPaths objectForKey:weakSelf.indexPathFordisplayedImage];
            urls = [urls arrayByAddingObject:movieURL];
            NSMutableDictionary *mutableVideoURLs = [weakSelf.videoURLsByIndexPaths mutablecopy];
            [mutableVideoURLs setobject:urls forKey:weakSelf.indexPathFordisplayedImage];
            weakSelf.videoURLsByIndexPaths = mutableVideoURLs;
            dispatch_sync(dispatch_get_main_queue(),^{
                [self.filmRoll reloadData];
                [weakSelf showPlayerLayerForURL:movieURL onTopOfImageView:weakSelf.displayedImageView];
            });
        }];
    }];
}

解决方法

我为这个问题向未来的访客发布了一个“答案”.我的代码现在正在工作,但事实是我不知道有什么区别.我不希望上面的代码是任何人的红色鲱鱼.这个问题可能在我的代码库中的其他地方.但是,我想提一下问题中发布的方法与工作代码中的方法之间的区别.

>我简化了控制器的结构,因此它一次只处理一个媒体项目.没有更多的videoURLsByIndexPath,我只是有self.mediaItem.这使组织显得更加易于管理.我也怀疑在电影作家的完成程序块中为movieURL添加一个条目可能与我看到的意外结果有关.
>电影Writer现在是一个强大的财产,而不是一个ivar.这不应该是AFAIK,因为ivars默认为强引用.然而,这与发布在这里和我的工作代码之间是有区别的.
>几乎肯定是无关的,但是我确实把一个if-else放在self.editedMovie.audioEncodingTarget = self.movi​​eWriter上,以检查[self.mediaItem tracksWithType:AVMediaTypeAudio]的计数是否大于0.
>由于不再需要维护视频网址的字典,所以我只需调用self.mediaItem = [AVURLAsset assetWithURL:movieURL] ;.我在电影作家的完成块之外做到这一点.

我觉得这不是最有价值的答案,但我希望这里提到的几点证明是有用的.

ios – GPUImage过滤视频的更多相关文章

  1. ios – 如何使用GPUImage实现GPUImageMaskFilter

    我需要使用掩码从完整图像剪切并创建被屏蔽的图像.=我试过以下:但是,我生成的输出图像是:请大家携手共进干杯.另外,谢谢BradLarson.解决方法掩码是第二个目标,如在滤镜着色器代码中可以看到的.然后,您需要在黑色背景上“反转”您的面具:白色心脏,因为过滤器使用RGB像素值的“重量”来设置目标图像上的alpha值.所以你的代码应该是和你的面具像预期结果.

  2. ios – GPUImage为每个RGB通道添加色调/颜色调整(调整红色以更加粉红色或橙色)

    试图调整特定频道的色调.看着色调过滤器,我想也许我可以通过评论绿色和蓝色修饰符,影响到只有红色通道的变化:但是,这张照片就是灰色/蓝色,被冲洗掉或是紫色的绿色.我在正确的轨道上吗?

  3. ios – 使用GPUImage和GPUImageHoughTransformLineDetector检测突出显示的文本边界框

    我正在使用GPUImageHoughTransformlineDetector来尝试检测图像中突出显示的文本:我使用以下代码来尝试检测边界蓝框线:无论edgeThreshold还是1023行,每次运行此命令时,结果输出如下所示:我不清楚为什么改变门槛没有做任何事情,但我确信我误解了一些事情.任何人对如何做到这一点有任何想法?解决方法我刚刚在框架中对Hough变换线检测器进行了一些改进,这将对此有所

  4. ios – 使用OpenGL的神秘app崩溃

    我正在使用GPUIImage库来开发iOS相机应用程序.有时,当应用程序在2-3分钟后暂停时,Xcode会在应用程序上发生崩溃,指向方法中的行:可能是这次崩溃的原因是什么?我有一个非常长的摄像头设置,代码本身在GPUImageContext类中.我在这里做错了什么?

  5. swift – 使用Cocoapods与应用程序扩展

    我试图在Xcode6Beta-6中使用cocoapods库构建照片应用程序扩展。Xcode为照片扩展创建的桥接头无法从Cocopapod查看任何内容。唯一的例外是,对于像SVProgressHUD这样的简单pod,以下丑陋的可怕的黑客工程:#import“../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h”。此外,thisSOquestion中描述的问题可能有关,但我反问这个问题,以防我的问题是特定于应用程式额外资讯。正确的方法是更新您的podfile只

  6. 如何在android中使用没有缩放的GPUImage

    如何在不调整原始图像大小的情况下使用GPUImage库,我需要为整个GPUImageView申请像Pixelate或Blur这样的过滤器.我想用GPUImage,但我不知道怎么做.解决方法您更改GPUImage库GPUImageRendering类下面的代码是

  7. 使用GPUImage Android进行视频处理

    我想使用GPUImageAndroid实时处理视频.我看到使用不同的过滤器创建图片的示例,但我没有找到任何使用过滤器录制视频的示例.这是可能的GPUImageAndroid?

  8. ios – “GPUImage.h”未找到

    我正在尝试在一个项目中设置GPUImage,但是我无法追踪为什么我收到错误:“GPUImage.h”未找到.我添加了框架,设置了目标依赖关系,将HeaderSearch路径添加为:framework,并添加了其他链接器标志-ObjC.还没有运气如果有人想看看,我包括了我的超简单测试项目hereandlinkedbelow.我知道这必须是文件和基本的,但是我在GitHub上进行了搜索,但没有找到对这

  9. 使用GPUImage重新创建iOS 7玻璃效果

    我试图在我的玻璃杯中使用iOS7风格的玻璃效果,将图像效果应用于MKMapView的屏幕截图.ThisUIImagecategory,由苹果提供,是我用作基准.该方法使源图像饱和,应用色彩,并使用输入值大量模糊:这产生了我正在寻找的效果,但需要太长时间–在iPhone4之间渲染时间为.3和.5秒.我想使用优秀的GPUImage,因为我的初步尝试速度已经快了约5-10倍,但是我似乎无法理解.这产生一

  10. ios – GPUImage过滤视频

    这是以前的后续跟踪,但是仅仅是相关的question我正在使用GPUImage库来应用过滤器到我的相机应用程序中的静态照片和视频.几乎一切都很好.我还没有解决的其余一个问题如下:>我捕获一个GPUImageMovie>我把它写入文件系统>我从文件系统读取它并应用一个新的过滤器>我将其写入文件系统中的其他URL保存到该新URL的是具有正确持续时间但没有移动的视频.当我打的时候,它只是静止的图像,我认

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部