码迷,mamicode.com
首页 > 移动开发 > 详细

iOS上用GPUImage给视频加滤镜

时间:2015-08-21 23:19:00      阅读:2298      评论:0      收藏:0      [点我收藏+]

标签:ios   gpuimage   视频   

最近在做一个需要给已有视频加滤镜的app,不是实时滤镜,而是给已经存在的视频加滤镜。

虽然网上有很多关于GPUImage的博客,但大多都是给图片加上滤镜或者是直接在摄像头上加上的实时滤镜,找了很久之后.....

发现在github上本来就有.....技术分享

但是在网上找,却没有说很多人给出这样的滤镜教程,这里简单给分享一下下。

1. 首先,什么是GPUImage?详细请度娘之,简单点来说,就是一个用GPU来处理图片和视频的第三方库。

2. 给图像加滤镜,如果是只加滤镜,那么网上有很多的教程,这里就不细说了,这里主要说一下怎么找要用的滤镜和这个滤镜需要设定什么参数。

2.1 寻找要用的滤镜, 其实在无论是很多人推荐的GPUImage还是苹果官方的CoreImage,滤镜的名字本身就已经很能说明这个滤镜的作用了:

技术分享

另外,在GPUImage里面,每个滤镜类Filter,都会有详细的注释来说明这个Filter的作用

技术分享

当然,全是英文就是了。。。。。技术分享

2.2 配置参数。

在GPUImage中,其实没有CoreImage可以直接用方法来获取当前滤镜需要用的参数那么方便,而是要通过点击进入对应filter的.h文件里面查询。

技术分享

如图,里面的red、green和blue就是要设定的配置参数。

3. 给已有视频加上滤镜,这个在GPUImage的github上就有官方的实例。。。。大家可以去看看。

/* 下面尝试使用GPUImage来给视频加上滤镜。
     */
    GPUImageContrastFilter *secondFilter = [[GPUImageContrastFilter alloc] init];
    
    [secondFilter setContrast:1.80];

    GPUImageBrightnessFilter *firstFilter = [[GPUImageBrightnessFilter alloc] init];
    
    [firstFilter setBrightness:0.1];
    
    //GPUImageColorBurnBlendFilter
    GPUImageRGBFilter *filter = [[GPUImageRGBFilter alloc] init];
    filter.red = 0.8;
    filter.green = 1;
    filter.blue = 1.2;
    
    NSURL *vedioURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"s2" ofType:@"mp4"]];
    
    GPUImageMovie *movie = [[GPUImageMovie alloc] initWithURL:vedioURL];
    
    movie.runBenchmark = YES;
    
    //[movie addTarget:filter];
    [movie addTarget:secondFilter];
    
    GPUImageMovieWriter *vedioWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:[NSURL fileURLWithPath:@"/Users/huazai/Desktop/t/t16.mov"] size:CGSizeMake(1280, 800)];
    
    movie.audioEncodingTarget = nil;
    
    vedioWriter.shouldPassthroughAudio = YES;
    
    movie.playAtActualSpeed = NO;
    
    [movie startProcessing];
    
    [filter addTarget:vedioWriter];
    //[secondFilter addTarget:vedioWriter];
    
    [vedioWriter startRecording];
    
    [vedioWriter setCompletionBlock:^{
        NSLog(@"已完成!!!");
    }];

往后我会再写几篇博客,关于怎么用GPUImage写水印,混合滤镜,敬请期待。。。。。


版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS上用GPUImage给视频加滤镜

标签:ios   gpuimage   视频   

原文地址:http://blog.csdn.net/u1031/article/details/47811947

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!