2010-11-30 69 views
1

如何为相机实现数码变焦滑块。 我使用以下API:AVCaptureVideoPreviewLayer,AVCaptureSession,AVCaptureVideoDataOutput,AVCaptureDeviceInput。相机数码变焦ios 4.0及更高版本

我想有相同的滑块,这是在iPhone 4相机应用程序中可用。

在此先感谢您提供任何提示和示例!

回答

1

我是一个新手,我已经尝试使用AVCaptureVideoPreviewLayer仅使用AVFoundation框架进行缩放,我也无法使其工作。我认为它的原因是该图层有自己的AVCaptureSession,它控制着自己的输出,即使我将它作为子图层添加到UIScrollView,它仍然自己运行,并且滚动图层不会影响预览图层。

从WWDC会议上419,“使用AVFoundation在iOS5的相机捕捉”,布拉德·福特说:“AVCaptureVideoPreviewLayer不会AVCaptureOutput(如AVCaptureVideoDataOutput做)继承,它从CALayer的继承,但可以插入到一个核心的动画树(如在AVFoundation中,AVSession拥有它的输出,但不拥有它的图层,图层拥有这个会话,所以如果你想将一个图层插入到一个视图的层次结构中,你可以将一个会话附加到它并忘掉它。然后,当图层树自行处理时,它也会清理会话。“

我见过布拉德·拉尔森,在使用的Open GL ES和AVFoundation框架的组合: http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios 使用AVCaptureVideoPreviewLayer,在那里他可以从相机调整的原始数据,所以我想这就是开始的地方。看看他的ColorTrackingCamera应用程序。它使用着色器,你(我)不需要缩放,但我认为可以使用类似的机制来缩放。

哦,我忘了提及Brad Larson没有将AVCaptureInput附加到AVCaptureSession。我可以看到他也使用他的队列的主线程,而不是在另一个线程上创建自己的队列。他的Open GL ES绘制框架的方法也是如何呈现图像,而捕获会话本身并没有这样做。所以,如果你了解得更多,或者我的假设是错误的,请让我知道。

希望这会有所帮助,但由于我对所有这些和OpenGL ES都很陌生,我假设如果我们可以捕获每个帧并将其转换为具有不同分辨率的UIImage和/或帧大小。

Jeff W.

相关问题