如何为相机实现数字变焦滑块。
我使用以下API:AVCaptureVideoPreviewLayer,AVCaptureSession,AVCaptureVideoDataOutput,AVCaptureDeviceInput。

我希望有相同的滑块,iPhone 4相机应用程序中提供该滑块。

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

最佳答案

我是新手,并且尝试使用AVCaptureVideoPreviewLayer仅使用AVFoundation框架进行缩放,但我也无法使其正常工作。我认为这是因为该层具有自己的AVCaptureSession来控制自己的输出,即使我将它作为子层添加到UIScrollView中,它仍然可以独立运行,并且滚动层不会影响预览层。

在WWDC会议419中,“ iOS5中使用AVFoundation从摄像机捕获”,布拉德·福特说:“ AVCaptureVideoPreviewLayer不继承AVCaptureOutput(像AVCaptureVideoDataOutput那样)。它继承自CALayer,但可以插入到核心动画树中(就像其他图层一样)。在AVFoundation中,AVSession拥有它的输出,但不拥有它的图层,这些图层拥有会话。因此,如果要将图层插入视图层次结构中,则将会话附加到该图层上,然后忽略它,然后在图层树中自行处理,也将清理会话。”

我见过Brad Larson,在以下位置结合使用了Open GL ES和AVFoundation框架:
http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios
使用AVCaptureVideoPreviewLayer,他可以在其中调整摄像机的原始数据,因此我认为这是开始的地方。查看他的ColorTrackingCamera应用。您(和我)不需要使用它使用的着色器,但是我认为可以使用类似的机制进行缩放。

哦,我忘了提到Brad Larson不会将AVCaptureInput附加到AVCaptureSession。我可以看到他还在队列中使用主线程,而不是在另一个线程上创建自己的队列。他对drawFrame的Open GL ES方法也是
他渲染图像,而捕获会话本身并没有这样做。因此,如果您了解更多,或者我的假设是错误的,也请让我知道。

希望这会有所帮助,但是由于我是所有这些和OpenGL ES的新手,所以我假设如果我们可以捕获每个帧并将其转换为具有不同分辨率和/或帧大小的UIImage,则可以使用该库进行缩放。

杰夫·W

关于iphone - ios 4.0及更高版本中的相机数码变焦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4311746/

10-12 18:56