GPUImageMovie播放控制
记录一下:
Initial method to setup GPUImageMovie,
- (void)setupVideo
{playerItem = [[AVPlayerItem alloc]initWithURL:self.recordSession.outputUrl];player = [AVPlayer playerWithPlayerItem:playerItem];movieFile = [[GPUImageMovie alloc] initWithPlayerItem:playerItem];movieFile.runBenchmark = YES;movieFile.playAtActualSpeed = YES;[self.view sendSubviewToBack:self.videoView];[movieFile addTarget:filter];[filter addTarget:self.videoView];[movieFile startProcessing];movieRunning = YES;dispatch_async(dispatch_get_main_queue(), ^{self.playButton.hidden = YES;});player.rate = 1.0;
}
This method is called when user clicks on a filter button.
- (void)filterClicked:(UIButton *)button
{// Set paused time. If player reaches end of the video, set pausedTime to 0.if (CMTimeCompare(pausedTime, player.currentItem.asset.duration)) {pausedTime = player.currentTime;
} else {pausedTime = CMTimeMake(0, 600.0);
}
[self.videoView setBackgroundColor:[UIColor clearColor]];[movieFile cancelProcessing];switch (button.tag)
{case 0:filter = nil;filter = [[GPUImageFilter alloc] init];break;case 1:filter = nil;filter = [[GPUImageColorInvertFilter alloc] init];break;case 2:filter = nil;filter = [[GPUImageEmbossFilter alloc] init];break;case 3:filter = nil;filter = [[GPUImageGrayscaleFilter alloc] init];break;default:filter = nil;filter = [[GPUImageFilter alloc] init];break;
}[self filterVideo];}
After filter generation, video play resume is handled in this method.
- (void)filterVideo {// AVPlayerItem is initialized with required urlplayerItem = [[AVPlayerItem alloc]initWithURL:self.outputUrl];
[player replaceCurrentItemWithPlayerItem:playerItem];//GPUImageMovie is initialized with AVPlayerItemmovieFile = [[GPUImageMovie alloc] initWithPlayerItem:playerItem];movieFile.runBenchmark = YES;
movieFile.playAtActualSpeed = YES;// Adding targets for movieFile and filter[movieFile addTarget:filter];
[filter addTarget:self.videoView]; // self.videoView is my GPUImageView[movieFile startProcessing];
movieRunning = YES;dispatch_async(dispatch_get_main_queue(), ^{self.playButton.hidden = YES;
});// Player rate is set to 0 means player is paused[player setRate:0.0];// Seeking to the point where video was pausedif (CMTimeCompare(pausedTime, player.currentItem.asset.duration) == 0) {[player play];} else {[player seekToTime:pausedTime];[player play];
}
}
GPUImageMovie播放控制相关推荐
- html5 音乐播放进度条,js实现音乐播放控制条
前言 html5中提供audio标签, 该标签实现音频的播放,之前就一直对于音频以及视频播放比较感兴趣,一直想要自己实现一个音频和视频播放的模块,这也是本文章撰写的初衷,最近花了些时间实现了Audio ...
- Leanback(1)-播放控制栏下添加新的行
我们要在播放控制栏下面加入下面一行. 这个就是标准的row. leanback的原理 Android Leanback结构源码简析 - 简书 我们知道Row用来提供数据,row可以通过一个Object ...
- 为FLASH(.SWF)文件添加播放控制条
网上有很多不错的FLASH格式的视频教程,可惜有些视频没有在其中加入能够控制进度的控制条,暴风影音这类软件能够播放FLASH格式的文件,并可以用它自己的控制条进行对FLASH的进度控制,由于各个视频录 ...
- Js实现音乐播放控制条
前言 html5中提供audio标签, 该标签实现音频的播放,之前就一直对于音频以及视频播放比较感兴趣,一直想要自己实现一个音频和视频播放的模块,这也是本文章撰写的初衷,最近花了些时间实现了Audio ...
- jquery实现audio的播放控制
实现audio的暂停与播放控制. <button onclick="playMusic()">播放<button> <audio id="p ...
- FFmpeg学习笔记--FFplay播放控制、FFplay基本命令参数、FFplay高级命令参数
目录 1--FFplay播放控制 2--FFplay命令参数 1 强制显示宽高,用于调整窗口大小 2 设置帧尺寸,仅适用于没有包含帧大小的视频 3 设置像素格式 4 以全屏模式启动 5 禁用音频.视频 ...
- H5 audio 音频标签自定义样式修改以及添加播放控制事件
20181023 更新 原来的代码拖动进度点只写了mouse事件,手机端的话应该是touch事件.所以出现了有朋友说的移动端无法拖动进度条的问题.现在更新的代码已经加上touch事件,即无论是手机模式 ...
- video自动播放 隐藏播放控制条,并且用点击 video 元素的时候 控制暂停和播放...
说一下几个要求: 页面打开自动播放 当不能自动播放时,第一次点击(document)就触发视频播放 因为播放控制条会挡住视频内容,所以隐藏,但是点击 video 元素的时候可以控制暂停和播放 以上要求 ...
- HTML5 video标签的播放控制
转自http://www.php.cn/html5-tutorial-402832.html 这篇文章主要介绍了HTML5 video标签的播放控制,本文讲解了获取影片总时长.播放.暂停.获取影片的播 ...
最新文章
- 参加web前端学习前需要知道的注意事项
- RabbitMQ绑定(bindings)
- ruby打印_Ruby程序打印一个数字的乘法表
- 互联网晚报 | 2月21日 星期一 | 北京冬奥会闭幕;天猫将新增菜鸟驿站送货上门服务;上汽奥迪首款电动车型开启预售...
- CGAL中Polyhedron_3中与半边结构有关的具体使用
- 图像等比例缩放的函数封装(PHP)
- Postgresql去掉某个字段多余的空格
- 河北省计算机科学专业高校排名,河北省计算机类专业大学排名
- Linux下shell脚本的编写
- 史记翻译-汉初三杰-张良-留侯世家第二十五
- 推荐系统 - 排序算法 - 神经网络:FNN 论文阅读
- 《方块方舟》自定义服务器工具,方舟方块世界服务器建立方法
- Gif动图如何在线编辑?教你三步在线编辑动图
- 【JavaScript】制作一个抽奖转盘页面
- 商场根据会员积分打折
- 【美图 - 计算机视觉岗】2018 年在线笔试考点:选择 + 编程(顺时针旋转数组90°)
- Cadence PCB层的概念
- IPTV是什么意思-2020年还有人再问IPTV是什么
- DETR训练VOC数据集
- iOS7免费设计资源汇总
热门文章
- CentOS-6.4 安装 Memcached
- [javax.validation]验证
- [ZZ]HOW TO:使用 Visual Studio .NET 将 SQL Server 2000 存储过程添加到 Visual SourceSafe
- V8 JavaScript 引擎 6.6 发布,异步性能大幅提升
- Datamill 一个开源的框架
- 15款最佳的 jQuery 分步引导插件
- 机器学习--支持向量机实战(三)完整版SMO算法实现
- anaconda 安装在c盘_Anaconda安装和使用原来这么简单...
- python的基础_毫无基础的人如何入门 Python ?
- 支持MySql的数据库自动分表工具DBShardTools发布