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写水印,混合滤镜,敬请期待。。。。。

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

时间: 2024-12-05 20:13:02

iOS上用GPUImage给视频加滤镜的相关文章

新浪微博项目---首页技术点三.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现)

一.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现) 1.下拉刷新 #pragma mark ---集成下*拉刷新控件 -(void)setupDownRefresh { //1.添加刷新控件 UIRefreshControl *control = [[UIRefreshControl alloc] init]; //只有用户通过手动下拉刷新,才会触发UIControlEventValueChanged事件 [control addTarget:self action:@selector(

ios 上拉加载下拉刷新Dome

为练手写了一个小的上拉加载更多下拉刷新的小的Dome . 没有太多的技术含量,只是作为新手的启发用.是上一篇下拉加载的扩展.先看一下那个再看这个就容易很多. Dome下载:http://download.csdn.net/detail/u010123208/8062715 先来梳理一下: 上拉家在更多就是上拉之后在底部现实一个视图,用来提示用户上拉加载更多,如果用户上拉就出发事件,进行加载并在试图中给予提示,同时后台加载数据,将添加的数据加入数据数组,最后重新导入列表: 下拉刷新同样的操作,只不

iOS8 Core Image In Swift:视频实时滤镜

iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸检测以及马赛克 在Core Image之前,我们虽然也能在视频录制或照片拍摄中对图像进行实时处理,但远没有Core Image使用起来方便,我们稍后会通过一个Demo回顾一下以前的做法,在此之前的例子都可以在模拟器和真机中测试,而这个例子因为会用到摄像头,所以 只能在真机上测试. 视频采集 我们要进

ios设备突破微信小视频6S限制的方法

刷微信朋友圈只发文字和图片怎能意犹未竟,微信小视频是一个很好的补充,音视频到位,流行流行最流行.但小视频时长不能超过6S,没有滤镜等是很大的遗憾.but有人突破限制玩出了花样,用ios设备在朋友圈晒出超时长.带滤镜甚至慢镜头拍摄的小视频.随ytkah一起看看他们是怎么玩的吧 未越狱ios设备在微信朋友圈上传延时.慢动作.滤镜.超时长小视频的方法: 第①步,将iPhone拍摄好的延时.超时长或者慢动作的视频保存到本地电脑,并同时截取一张视频画面保存.(PS:添加滤镜效果可以通过iMovie等App

关于iOS上使用ffmpeg的编译配置

使用ffmpeg进行音视频开发,首先编译需要把ffmpeg的源码编译成静态库,编译不是大问题,关键问题是编译的时候的各种配置该怎么设置的问题.之前在网上搜索学习,这篇文章不错:iOS: FFmpeg编译和使用问题总结 .有些文章给出编译的整个命令,有的给脚本链接,但是都有一些问题,因为ffmpeg版本更新了.iOS版本更新了(我下的是ffmpeg2.3).最后东拼西凑,终于编译成功了一个,编译命令是: (1) ./configure --prefix=../i386 --disable-ffmp

iOS上绘制自然的签名-b

这里有一篇很棒的文章写如何在Android上获取流畅的签名:Smoother Signatures:https://corner.squareup.com/2012/07/smoother-signatures.html,但是我没有找到一篇是写在iOS上如何实现.那么,究竟怎么做才能在iOS设备上获取用户的签名呢? 虽然我没有找到任何关于获取签名的文章,但是在App store上已经有了实现得很好的app.  Paper by 53:http://www.fiftythree.com/paper

绘声绘影给视频加多个马赛克和动态马赛克方法

魅力网络最近处理视频有点多,为了复习知识,还是整理下资料保存记忆,时间久了就忘了. 核心用到的工具是:自定义滤镜和修剪  静态的比较好加,复制个头再粘贴到尾就可以了,动态的需要一帧一帧看,移动位置了需要添加关键帧. 视频打多个静态马赛克 如logo 视频教学 视频加动态马赛克方法 如人物头 视频教学 百度贴吧教学

iOS和tvOS游戏按需加载资源简介

摘要 与iOS 9和watchOS 2一起,苹果引入了一套新的内容分发API,以便节约设备空间,这就是按需加载资源.通过使用按需加载资源,我们可以将特定的应用程序资源托管在苹果的服务器上,然后在需要的时候进行加载.在这个教程中,我将通过开发一个图片查看应用介绍一下按需加载资源的基本用法. tvOS On Demand Reourse 按需加载 iOS开发 目录[-] 介绍 准备工作 1. 按需加载资源 益处 类别 限制 应用分片 删除按需加载资源 2. 分配和指定Tag 3. 访问按需请求资源

复杂TableView在iOS上的性能优化

声明:本文翻译自<iOS performance optimization>,原文作者 Khang Vo.翻译本文纯属为了技术交流的目的,并不具有任何的商业性质,也不得利用本文内容进行商业盈利.欢迎转载,但是希望转载的时候加上出处连接,谢谢.译者联系方式 [email protected],如果有 iOS 开发之类的问题,欢迎?一起讨论,谢谢.另,由于本人翻译经验不多,如果翻译不妥或者理解不到位的地方,希望各位朋友海涵,可以发信到上述邮箱,我会及时地根据大家的反馈,对翻译稿做及时地修改,谢谢!