iOS GPUImage研究序三:GPUImageMovie简介
来源:互联网 发布:java教程pdf完整版 编辑:程序博客网 时间:2024/06/13 19:13
前言:
GPUImageMovie 不支持在线视频播放--换而言之,他仅仅支持本地视频文件播放、因此显得很鸡肋。
其大概使用方法如下:
初始化 movie
NSURL *sampleURL = [[NSBundle mainBundle]URLForResource:@"mv" withExtension:@"MPG" subdirectory:nil];movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];
runBenchmark
这使当前视频处于基准测试的模式,记录并输出瞬时和平均帧时间到控制台 每隔一段时间打印: Current frame time : 51.256001 ms,直到播放或加滤镜等操作完毕
movieFile.runBenchmark = NO;
//是否重复播放movieFile.shouldRepeat = YES;控制GPUImageView预览视频时的速度是否要保持真实的速度。如果设为NO,则会将视频的所有帧无间隔渲染,导致速度非常快。设为YES,则会根据视频本身时长计算出每帧的时间间隔,然后每渲染一帧,就sleep一个时间间隔,从而达到正常的播放速度。movieFile.playAtActualSpeed = YES;
添加显示:
GPUImageView *filterView = [[GPUImageView alloc]initWithFrame:self.view.frame];[self.view addSubview: filterView];[movieFile addTarget:filterView];
开始处理并播放
视频处理后输出到 GPUImageView 预览时不支持播放声音,需要自行添加声音播放功能 [movieFile startProcessing];
代理:
@protocol GPUImageMovieDelegate <NSObject>- (void)didCompletePlayingMovie;@end
所有代码:
#import "ViewController.h"#import "GPUImage.h"#import <AssetsLibrary/ALAssetsLibrary.h>@interface ViewController ()<GPUImageMovieDelegate>@end@implementation ViewController{ GPUImageMovie *movieFile; GPUImageOutput<GPUImageInput> *filter;}- (void)viewDidLoad { [super viewDidLoad]; GPUImageView *filterView = [[GPUImageView alloc] initWithFrame:self.view.frame]; [self.view addSubview: filterView]; // 播放 NSURL *sampleURL = [[NSBundle mainBundle]URLForResource:@"mv" withExtension:@"MPG" subdirectory:nil];// NSURL *sampleURL = [NSURL URLWithString:@"http://bos.nj.bpc.baidu.com/tieba-smallvideo/11772_3c435014fb2dd9a5fd56a57cc369f6a0.mp4"]; movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL]; /** * This enables the benchmarking mode, which logs out instantaneous and average frame times to the console * * 这使当前视频处于基准测试的模式,记录并输出瞬时和平均帧时间到控制台 * * 每隔一段时间打印: Current frame time : 51.256001 ms,直到播放或加滤镜等操作完毕 */ movieFile.runBenchmark = NO; //是否重复播放 movieFile.shouldRepeat = YES; /** * 控制GPUImageView预览视频时的速度是否要保持真实的速度。 * 如果设为NO,则会将视频的所有帧无间隔渲染,导致速度非常快。 * 设为YES,则会根据视频本身时长计算出每帧的时间间隔,然后每渲染一帧,就sleep一个时间间隔,从而达到正常的播放速度。 */ movieFile.playAtActualSpeed = YES; // GPUImageFilter* progressFilter = [[GPUImageFilter alloc] init]; // [movieFile addTarget:progressFilter]; [movieFile addTarget:filterView]; // [movieWriter startRecording]; /** * 视频处理后输出到 GPUImageView 预览时不支持播放声音,需要自行添加声音播放功能 * * 开始处理并播放... */ [movieFile startProcessing];}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return (interfaceOrientation == UIInterfaceOrientationPortrait);}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning];}@end
0 0
- iOS GPUImage研究序三:GPUImageMovie简介
- iOS GPUImage之GPUImageMovie视频滤镜(1)
- iOS GPUImage之GPUImageMovie视频滤镜(2)
- iOS GPUImage研究序二:更简单GPUImage导入方式
- iOS GPUImage研究序一:内置滤镜
- iOS GPUImage研究序一:内置滤镜
- iOS GPUImage研究总结
- iOS GPUImage研究三:视频采集并添加实时滤镜
- iOS GPUImage研究一:图片滤镜
- iOS GPUImage研究二:捕获图像stillCamera写入相册
- iOS GPUImage研究四:为视频文件添加滤镜
- iOS GPUImage研究五:短视频拍摄(滤镜、文件写入)
- iOS GPUImage研究六:为视频添加图片水印
- iOS GPUImage研究七:动态相册初探(水印)
- GPUImage使用简介
- iOS GPUImage 的使用
- iOS GPUImage 的使用
- iOS GPUImage 的使用
- 如何获取文件的绝对路径
- PAT-A-1015. Reversible Primes (20)
- [Python源码解析]机器学习-决策树
- QT中定时器的使用方法
- F
- iOS GPUImage研究序三:GPUImageMovie简介
- AsyncTask学习
- You Only Look Once: Unified, Real-Time Object Detection
- msqli_* prevent SQL injection
- 算法中的小技巧
- kafka数据可靠性深度解读
- 2017华为软件精英挑战赛总结
- 解决VSCODE界面出现阴影-MAC版
- elasticsearch查询语句篇