- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个 iOS 项目,该项目使用 AV-Out 在第二个屏幕上的 1280x720 窗口中显示内容。
我有一个 MPMoviePlayerController
的 View 作为背景,在不同的其他元素之上,如 UIImages
和 UILabels
。背景电影循环播放。
现在我想用另一个具有透明度的全屏动画覆盖整个 View ,包括所有可见元素,以便只有部分底层 View 可见。
我首先尝试使用 UIImageView
制作 png 动画。我惊讶地发现它实际上适用于 iPhone5,但是当然 png 的尺寸太大以至于它使用了太多的内存并且它在 iPhone4s 以下的所有东西上崩溃了。所以我需要另一种方式。
我想出了如何使用 AVFoundation 同时播放第二部电影。到目前为止,一切都很好。现在我可以播放覆盖视频了,当然它还不是透明的。
我还了解到,借助 GPUImage
库,我可以使用 GPUImageChromaKeyBlendFilter
从视频中滤除颜色以使其透明,然后将其与另一个视频组合。
我还不明白的是在我的案例中实现它以获得我想要的结果的最佳方式。
我能否使用顶部视频下方的整个 View 层次结构作为 GPUImageChromaKeyBlendFilter
的第一个输入,并将绿屏风格的视频作为第二个输入,并以 720p 实时显示结果?我该怎么做?
或者使用 GPUImageChromaKeyFilter
过滤绿屏风格的视频,然后在所有其他 View 之上的 View 中播放它会更好吗?那么这个视频的背景是透明的吗?
感谢您的帮助!
最佳答案
您需要使用 AVFoundation.framework 构建自定义播放器,然后使用带 alpha channel 的视频。 AVFoundation 框架允许更强大的视频处理,而没有 MPMedia 框架的许多限制。构建自定义播放器并不像人们想象的那么难。我在这里写了一个教程:http://www.sdkboy.com/?p=66
其他方式............
框架中的 SimpleVideoFileFilter 示例展示了如何加载电影、过滤电影以及将其编码回磁盘。修改它以执行色度键控给出以下结果:
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"m4v"];
movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];
filter = [[GPUImageChromaKeyBlendFilter alloc] init];
[filter setColorToReplaceRed:0.0 green:0.0 blue:1.0];
[filter setThresholdSensitivity:0.4];
[movieFile addTarget:filter];
UIImage *inputImage = [UIImage imageNamed:@"background.jpg"];
sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];
[sourcePicture addTarget:filter];
NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"];
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];
movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)];
[filter addTarget:movieWriter];
[movieWriter startRecording];
[movieFile startProcessing];
[movieWriter setCompletionBlock:^{
[filter removeTarget:movieWriter];
[movieWriter finishRecording];
}];
以上代码将从名为 sample.m4v 的应用程序资源加载影片,将其送入设置为纯蓝色键控且灵敏度为 0.4 的色键滤镜,附加背景图像以用于色度键控,然后将所有这些发送到电影编码器,该编码器将 Movie.m4v 写入应用程序的/Documents 目录中。
您可以调整阈值和特定的蓝色调以满足您的需要,也可以根据需要将输入图像替换为另一部电影或其他来源。此过程也可以应用于来自 iOS 设备相机的实时视频,并且您可以根据需要将结果显示在屏幕上。
在运行 iOS 5.0 的 iPhone 4 上,640x480 视频帧的色度键控需要 1.8 毫秒(500+ FPS),720p 帧(15 FPS)需要 65 毫秒。更新的基于 A5 的设备比这些操作快 6-10 倍,因此它们可以毫不费力地处理 1080p 视频。我使用 iOS 5.0 的快速纹理缓存进行帧上传和检索,这加快了 4.x 以上操作系统版本的处理速度。
我对此的一个警告是,我还没有完全正确地在我的电影编码中录制音频,但我现在正在努力。
关于iphone - 在 UIView 上透明的 GPUImage 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13934643/
最近,我正在研究GPUImage的源代码,以提高我的OpenGL ES技能。当我阅读GPUImageContext类的代码时,我发现它存储了对queue的引用,该引用已在库的其他部分中使用。 例如,在
我正在尝试在一个 View 中实现亮度、对比度和曝光滤镜,就像您在 iPhoto 应用程序中看到的一样。我试图建立组过滤器来做同样的事情。但它显示的是白屏而不是修改后的图片。这是我应用的代码。 GP
我想要一个非水平的GPUImageTiltShiftFilter旋转。我想将其旋转到任意旋转角度。我还希望过滤器速度快,可以使用带有UIRotationGestureRecongizer的UI旋转它。
我想将 GPUImage 的直方图均衡过滤器 ( link to .h ) ( link to .m ) 用于相机应用。我想实时使用它,并将其作为一个选项呈现,以应用于实时摄像头。我知道这可能是一项昂
大家好,Stackoverflow! 我的代码需要您的帮助。我写了一个实时模糊相机的小应用程序。 为此我使用了 GPUImage来自 Brad Larson 的框架(感谢 Brad Larson)!
我在我的项目中使用 GPUImage,我需要一种有效的方法来获取列总和。简单的方法显然是检索原始数据并添加每列的值。有人能建议一种更快的方法吗? 最佳答案 实现此目的的一种方法是使用我对 GPUIma
在图像上应用 GPUImage 滤镜时,我遇到了一个奇怪的问题。我尝试在图像上应用不同的滤镜,但在应用 10-15 个滤镜后,它会向我发出内存警告,然后崩溃。这是代码: sourcePicture =
第一次使用不同的 GPUImage 过滤器时,我看到了奇怪的性能,GPUImage 在实时预览和输出照片之间显示出相当大的差异。 我目前正在使用 GPUImageSobelEdgeDetectionF
我正在开发一个图像拼接应用程序,它从相机获取输入,估计图像变换并通过估计的变换扭曲输入图像。如下图所示,来自相机的图像被输入到链的 2 个分支中。然而,图像变形的处理依赖于变换估计的结果。我的问题是如
我使用 GPUImageLookupFilter 进行图像处理。模拟器似乎没问题,但是当我在真实设备上运行我的应用程序时,我得到了不同的图像结果。 这是两张图片 Simulator Real devi
我在使用 GPUImage 时遇到以下问题:1st 我在相机上添加了一个灰度滤镜,然后我使用 GPUImageAverageColor 来获得平均颜色。问题是我通过 block 获得的颜色不在灰度范围
此代码在执行后约 1 秒崩溃(iOS7): -(void)initializeCamera { GPUImageStillCamera *stillCamera=[[GPUImageStill
我有: 主 GPUImage 预览窗口GPUImage 直方图位于单独的 GPUImageView 上。 //Adding main preview self.previewView = [[GPUI
我已经实现了下面的代码来启用点击对焦相机。它在后置摄像头上工作正常,但在使用前置摄像头时失败,因为_videoCamera.inputCamera.isFocusPointOfInterestSupp
我正在尝试使用 GPUImage 在我的应用程序中实现直方图。 GPUImage github 上名为 FilterShowcase 的示例项目附带了一个很好的直方图生成器,但由于我正在制作的应用程序
我正在使用 Xcode 6.1 和 iOS SDK 8.1。 我按照 Github 自述文件中的描述添加了静态库并添加了这段代码。 GPUImageStillCamera *rearCamera =
我正在尝试对图像应用一些滤镜,所以我使用 GPUImageFilterGroup 来混合滤镜,但我的应用程序崩溃了,这是我的代码: - (IBAction)effectApply:(id)sender
我正在创建一个将图像转换为二进制图像的应用程序。为此,我正在使用 GPUimage 框架。首先,它会将其转换为灰度,然后更改对比度,然后将其转换为二值化图像。 当我使用灰度和对比度滤镜时,它会生成内存
我希望在我的应用程序中实现类似于使用用户触摸的涂抹工具的效果,并且我看过类似 this 的文章关于如何实现它,如果我将代码移植到 iOS。 我已经在应用程序中实现了 GPUImage,它可以很好地过滤
使用 GPUImageAlphaBlendFilter,我在 UI 中也有一个 slider ,它允许我更改mix。它工作得很好,我真的可以快速来回移动 slider ,但如果我滑动太快或滑动超过几秒
我是一名优秀的程序员,十分优秀!