ios - 在 iOS 中将 CIFilter 应用于视频

标签 ios core-image

我正在开发一个视频 session 应用程序,下面的代码成功地在屏幕上绘制了一个框架:

 -(int)drawFrameOnMainThread{
    if(mBitmapContext){
        if(mDisplay){
            CGImageRef imageRef = CGBitmapContextCreateImage(mBitmapContext);
    #if TARGET_OS_IPHONE
            UIImage *image = [UIImage imageWithCGImage:imageRef];

            [self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES];

    #elif TARGET_OS_MAC
            [mDisplay setCurrentImage:imageRef];
    #endif
            CGImageRelease(imageRef);
        }
    }
    return 0;
}

我想将 CIFilter 应用于正在绘制的框架,因此我修改了代码的 iOS 部分,如下所示:

UIImage *image = [UIImage imageWithCGImage:imageRef];

        CIImage *beginImage = image.CIImage;

        CIContext *context = [CIContext contextWithOptions:nil];

        CIFilter *filter = [CIFilter filterWithName:@"CISepiaTone" 
                                      keysAndValues: kCIInputImageKey, beginImage, 
                            @"inputIntensity", [NSNumber numberWithFloat:0.8], nil];
        CIImage *outputImage = [filter outputImage];

        CGImageRef cgimg = 
        [context createCGImage:outputImage fromRect:[outputImage extent]];
        UIImage *newImg = [UIImage imageWithCGImage:cgimg];

[self performSelectorOnMainThread:@selector(setImage:) withObject:newImg waitUntilDone:YES];

结果是我的视频屏幕保持黑色。有人可以在这里看到错误吗?我已经在这里待了几个小时了,无法弄清楚。

最佳答案

我已经解决了这个问题,问题在于在线初始化 CIImage:

//Wrong

CIImage *beginImage = image.CIImage;

//Right
CIImage *beginImage = [CIImage imageWithCGImage:imageRef];

不过正如 Brad 所说,性能是 Not Acceptable 。在 iPad2 上,视频滞后于音频大约 5 秒。所以我会为此研究其他解决方案,但我仍然很高兴看到它比其他任何东西更能作为概念证明来工作:)

关于ios - 在 iOS 中将 CIFilter 应用于视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307220/

相关文章:

iphone - 在不触发获取 Controller 委托(delegate)的情况下更改 NSManagedObject

ios - Xcode 控制台打印奇怪的错误

ios - 如何从 UIWebView 获取 URL 的哈希片段

ios - Apple 是否为没有 Mac 设备的程序员提供开发 iOS 安装程序?

ios - TableView header 中的 UISearchController 与其他项目重叠

iphone - iOS 中图像的 CITemperatureAndTint

cocoa - 提高 CALayer 过滤器的性能

ios - 如何在 Swift 中从字符串生成条形码?

ios - swift 中的 Core Image TileEffect 过滤器返回 nil 图像

ios - 如何在 Swift 中将图像转换为渐进式 JPEG?