【问题标题】:camera digital zoom in ios 4.0 and laterios 4.0 及更高版本中的相机数码变焦
【发布时间】:2010-11-30 08:17:04
【问题描述】:

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

我想要相同的滑块,它在 iphone 4 相机应用程序中可用。

提前感谢任何提示和示例!

【问题讨论】:

    标签: iphone ios ios4 camera zooming


    【解决方案1】:

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

    来自 WWDC 会话 419,“在 iOS5 中使用 AVFoundation 从相机捕获”,Brad Ford 说“AVCaptureVideoPreviewLayer 不继承自 AVCaptureOutput(就像 AVCaptureVideoDataOutput 一样)。它继承自 CALayer,但可以插入到核心动画树中(像其他层)。在 AVFoundation 中,AVSession 拥有它的输出,但不拥有它的层。层拥有会话。因此,如果您想将层插入视图层次结构,则将会话附加到它并忘记它。然后当 layer tree 释放自己时,它也会清理 session。"

    我见过 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.

    【讨论】:

      猜你喜欢
      • 2019-02-11
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多