繁体   English   中英

想要使用AVFoundation框架在iphone相机中进行缩放功能

[英]want zooming functionality in iphone camera using AVFoundation framework

我想使用UISlider缩放相机。

我通过调整AVCaptureVideoPreviewLayerAffineTransform成功完成了它。

这是代码

-(void)sliderAction:(UISlider*)sender{
    CGAffineTransform affineTransform = CGAffineTransformMakeTranslation(sender.value, sender.value);
    affineTransform = CGAffineTransformScale(affineTransform, sender.value, sender.value);
    affineTransform = CGAffineTransformRotate(affineTransform, 0);
    [CATransaction begin];
    [CATransaction setAnimationDuration:.025];
     //previewLayer is object of AVCaptureVideoPreviewLayer
    [[[self captureManager]previewLayer] setAffineTransform:affineTransform];
    [CATransaction commit];
}

但是当我捕捉到它时,我会得到非缩放的图像对象。

回复有点迟了。 但我正在回复以供将来参考。 实际上,您在代码中所做的只是您已经更改了预览图层的缩放系数而不是基础输出连接。 但是,要使缩放最初反映在捕获的输出上,您必须将该因子也放在输出连接中。 你可以使用类似下面的东西:

-(void)sliderAction:(UISlider*)sender
{
    AVCaptureConnection* connection = [self.photoOutput connectionWithMediaType:AVMediaTypeVideo]; // photoOutput is a AVCaptureStillImageOutput object, representing a capture session output with customized preset

    CGAffineTransform affineTransform = CGAffineTransformMakeTranslation(sender.value, sender.value);
    affineTransform = CGAffineTransformScale(affineTransform, sender.value, sender.value);
    affineTransform = CGAffineTransformRotate(affineTransform, 0);
    [CATransaction begin];
    [CATransaction setAnimationDuration:.025];
     //previewLayer is object of AVCaptureVideoPreviewLayer
    [[[self captureManager]previewLayer] setAffineTransform:affineTransform];
    if (connection) {
        connection.videoScaleAndCropFactor = sender.value;
    }
    [CATransaction commit];
}

它应该做的伎俩。

理想情况下,您不应在Slider例程中执行connection.videoScaleAndCropFactor更改,并且应该将代码放在原始捕获例程中,并在调用captureStillImageAsynchronouslyFromConnection方法之前将其设置为仅使用滑块的瞬时值。

希望能帮助到你 :)

首先,您的代码仅缩放图层内容而不是CMSampleBuffer 您接下来的工作是在CMSampleBuffer上对CVPixelBuffer进行缩放,并将缩放的CMSampleBuffer保存到AVWriter 您可以使用Accelerate.framework来缩放CVPixelBuffer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM