【发布时间】:2010-11-30 08:17:04
【问题描述】:
如何为相机实现数字变焦滑块。 我使用以下 API:AVCaptureVideoPreviewLayer、AVCaptureSession、AVCaptureVideoDataOutput、AVCaptureDeviceInput。
我想要相同的滑块,它在 iphone 4 相机应用程序中可用。
提前感谢任何提示和示例!
【问题讨论】:
标签: iphone ios ios4 camera zooming
如何为相机实现数字变焦滑块。 我使用以下 API:AVCaptureVideoPreviewLayer、AVCaptureSession、AVCaptureVideoDataOutput、AVCaptureDeviceInput。
我想要相同的滑块,它在 iphone 4 相机应用程序中可用。
提前感谢任何提示和示例!
【问题讨论】:
标签: iphone ios ios4 camera zooming
我是一个新手,我尝试使用 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.
【讨论】: