2014-02-24 51 views
2

我已經通過與obj-C GPUImage框架消失了,並按照文獻中的例子中,添加以下代碼段與意圖來顯示過濾實況視頻:GPUImage顯示圖像,而不是實時視頻

CGRect mainScreenFrame = [[UIScreen mainScreen] applicationFrame]; 
    GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; 
    videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; 

    GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"PositionColor"]; 
    GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:mainScreenFrame]; 

    // Add the view somewhere so it's visible 
    [self.view addSubview:filteredVideoView]; 
    [videoCamera addTarget:customFilter]; 
    [customFilter addTarget:filteredVideoView]; 

    [videoCamera startCameraCapture]; 

它的工作原理,但不是視頻,我得到一個單一的靜止圖像。我已閱讀過它並查看了一些示例,但無法確定它爲何無法正常工作。任何幫助將非常感激。

謝謝!

回答

5

您需要掛在您的GPUImageVideoCamera某處。如果上述內容放置在方法中,並且項目啓用了ARC,則GPUImageVideoCamera實例將在方法退出時立即解除分配。這將終止視頻捕獲,並可能導致其他不安定的工件。

在您的類中創建一個GPUImageVideoCamera實例變量,並將其用於上述操作。您也需要這樣做,以便在完成時可以暫停並停止相機。

+0

謝謝布拉德。真的很喜歡這個框架,希望我會用它創造出一些好東西:) – royherma

相關問題