2012-07-05 98 views
4

所以我有一个应用程序,目前可以捕捉视频与前置的iPhone摄像头,然后做一些实时的视频输入处理。然而,我想要做的是让这个过程在后台运行,并将其他控件放在屏幕上。举例来说,我想运行相机并处理图像供稿,但我希望用户看到带有一些按钮的黑色屏幕。任何想法如何做到这一点?捕获视频,而不显示实际的视频源

+0

你有没有做过什么? – OthmanT 2012-07-05 15:03:32

+0

是的,我已经在捕捉和处理视频供稿,我只想知道如何将它移动到背景并在运行时显示其他内容。 – 2012-07-05 15:16:42

+0

如果用户看不到捕获视频的结果,用户如何知道摄像机指向正确的方向? – 2012-07-05 15:23:06

回答

16

这样我们就可以得到术语了,通过“在后台”,您的意思是在应用程序处于前台时运行相机捕获,但不显示实际的视频源。这是可能的,但我想明确指出,如果将整个应用程序移动到后台,那么您将无法访问相机。

有几种方法可以做到这一点,但我花费最多时间的方法是通过AV Foundation获取视频帧(或照片)。使用AVCaptureDevice和AVCaptureSession,您可以获取视频帧并将它们路由到编码器以保存到磁盘或使用您自己的自定义代码进行处理。这些都不需要在屏幕上显示相机馈送,因此您可以使用任何您喜欢的接口,并在没有任何屏幕指示的情况下执行此视频录制或照片捕捉。

我会告诫你应该明确告诉你的用户你在做什么,这样你就不会冒着侵犯他人隐私的风险。对于那些做这件事的人来说,苹果公司并没有给予善意的反应(原因很好)。

我在我的开放源码GPUImage视频和照片处理框架中封装了很多这样的内容,因此您可以查看GPUImageVideoCamera类的代码,了解如何配置捕获输入。我将视频帧交给OpenGL ES来处理滤波器和其他处理操作,但如果你只是想自己编码或处理,你可以忽略它的那部分。