gpt4 book ai didi

iphone - 透明视频 iPhone

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:32:49 24 4
gpt4 key购买 nike

我有一个录制在蓝屏上的视频。

有没有办法让它在 iOS 设备上透明?我知道我可以使用像素着色器和 openGL 来做到这一点,但我担心解码视频帧/上传 openGL 纹理和使用像素着色器消除片段的过程会太慢。

有什么建议吗?

最佳答案

听起来您想对视频进行某种色度键控。我刚刚将执行此操作的功能添加到我的 GPUImage框架,顾名思义,它使用基于 GPU 的处理来执行这些操作,比受 CPU 约束的过滤器快很多倍。

框架中的 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 的色度键过滤器,附加一个用于色度键控的背景图像,然后将所有这些发送到电影编码器,该编码器在应用程序的 /Documents 目录中写入 Movie.m4v

您可以调整阈值和特定的蓝色调以满足您的需要,也可以根据需要将输入图像替换为另一部电影或其他来源。此过程也可以应用于来自 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 - 透明视频 iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9717543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com