Iphone 使用GPUImage编辑某些电影帧

Iphone 使用GPUImage编辑某些电影帧,iphone,core-image,Iphone,Core Image,我想使用GPUImage对电影的某些帧应用效果。我已经成功地在整个电影文件中添加了效果,那么有没有办法在不同的帧上添加不同的效果呢 例如,我想在5秒到10秒的视频中应用乌贼墨的效果。所以我需要0-5秒来制作原始视频,5-10秒来制作深褐色效果,10秒来制作原始视频 另外,我想使用GPUImage在某些帧上绘制文本/图像,可以吗 任何回复都将不胜感激。您可以要求MPMoviePlayerController或AVAssetImageGenerator在指定时间生成缩略图 如果你喜欢视频而不仅仅

我想使用GPUImage对电影的某些帧应用效果。我已经成功地在整个电影文件中添加了效果,那么有没有办法在不同的帧上添加不同的效果呢

例如,我想在5秒到10秒的视频中应用乌贼墨的效果。所以我需要0-5秒来制作原始视频,5-10秒来制作深褐色效果,10秒来制作原始视频

另外,我想使用GPUImage在某些帧上绘制文本/图像,可以吗


任何回复都将不胜感激。

您可以要求MPMoviePlayerController或AVAssetImageGenerator在指定时间生成缩略图

如果你喜欢视频而不仅仅是帧,你可以从视频中裁剪出一部分,并对其应用效果。这将获取视频的URL并将其修剪到指定的时间

    AVURLAsset *videoAsset = [AVURLAsset URLAssetWithURL:videoURL options:nil]; 
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:videoAsset presetName:AVAssetExportPresetHighestQuality];
    exportSession.outputURL = [NSURL fileURLWithPath:outputURL];
    exportSession.outputFileType = AVFileTypeQuickTimeMovie;
    CMTimeRange timeRange = CMTimeRangeMake(CMTimeMake(startMilliseconds, 1000), CMTimeMake(endMilliseconds - startMilliseconds, 1000));
    exportSession.timeRange = timeRange;

    [exportSession exportAsynchronouslyWithCompletionHandler:^{
        switch (exportSession.status) {
            case AVAssetExportSessionStatusCompleted:
                 ///
                // Call something to apply the effect
               ///
                break;
            case AVAssetExportSessionStatusFailed:
                NSLog(@"Failed:%@", exportSession.error);
                break;
            case AVAssetExportSessionStatusCancelled:
                NSLog(@"Canceled:%@", exportSession.error);
                break;
            default:
                break;
        }
    }];
完成后,您将应用您的效果,如果您使用视频剪辑路线,则将它们合并并编码


Brandon,感谢您提供替代解决方案。你的意思是,如果我想在5秒到10秒的视频中应用效果,我应该先导出这5秒的视频,然后使用GPUImage应用效果,然后将其插入原始视频中?是的,这似乎是我能找到的最佳解决方案。我当然不是这方面的专家,所以其他人可能会有更好的答案。谢谢你的解决方案,我已经想到了这个,但我需要更好的解决方案,因为如果我在不同的时间范围内应用多个效果,可能需要时间。