所以我有一个应用程序,目前可以使用前置 iPhone 摄像头捕捉视频,然后对视频源进行一些实时处理。然而,我想要做的是让这个进程在后台运行,并将其他控件放在屏幕上。因此,例如,假设我想运行相机并处理图像输入,但我希望用户看到一个带有一些按钮的黑屏。关于如何执行此操作的任何想法?
最佳答案
为了让我们正确理解术语,“在后台”是指当您的应用程序在前台时运行相机捕获,但不显示实际的视频源。这是可能的,但我想明确表示,如果您将整个应用程序移至后台,那么您将无法访问相机。
有几种方法可以做到这一点,但我用得最多的方法是通过 AV Foundation 抓取视频(或照片)帧。使用 AVCaptureDevice 和 AVCaptureSession,您可以抓取视频帧并将它们路由到编码器以保存到磁盘或使用您自己的自定义代码进行处理。这些都不需要在屏幕上显示摄像头画面,因此您可以设置任何您喜欢的界面,并在没有任何屏幕指示的情况下进行视频录制或照片拍摄。
我要提醒您,您应该向用户明确说明您在做什么,以免冒侵犯他人隐私的风险。 Apple 不会善待那些这样做的人(有充分的理由)。
我在我的开源中封装了很多这样的东西 GPUImage视频和照片处理框架,因此您可以查看 GPUImageVideoCamera 类的代码,了解我如何配置捕获输入。我将视频帧交给 OpenGL ES 以应用滤镜和其他处理操作,但如果您只想进行自己的编码或处理,则可以忽略这部分内容。
关于iphone - 捕获视频而不显示实际的视频源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346799/