美文网首页
关于GPUImage超广角微距设置修改

关于GPUImage超广角微距设置修改

作者: Wayne_王 | 来源:发表于2024-08-20 14:52 被阅读0次

原因:由于GPUImage代码过于老旧所以并不支持超广角的设置

修改文件--所有代码都是在GPUImageVideoCamera.m文件中修改

第1步--先封装一个获取当前设备的函数放在.m文件最后

- (AVCaptureDevice *)wjx_getCaptureDeviceWithPosition:(AVCaptureDevicePosition)positon{
    NSArray<AVCaptureDeviceType> *deviceTypes = @[AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInDualCamera];//设备类型:广角镜头、双镜头
    if (@available(iOS 13.0, *)) {
        // 数组成员的顺序,决定搜索设备的顺序,不要随意调整。
        deviceTypes = @[AVCaptureDeviceTypeBuiltInTripleCamera,AVCaptureDeviceTypeBuiltInDualWideCamera,AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInDualCamera];
    }
    AVCaptureDeviceDiscoverySession *dissession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:deviceTypes mediaType:AVMediaTypeVideo position:positon];
//    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
    for (AVCaptureDevice *device in dissession.devices)
    {
        if ([device position] == positon)
        {
            return device;
        }
    }
}

第2步--把所有获取摄像头的位置都换成上面的方法

//第1处
- (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition; 
{
    /*
        ...省略
    **/
    
    // Grab the back-facing or front-facing camera
    _inputCamera = nil;
//  NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
//  for (AVCaptureDevice *device in devices) 
//  {
//      if ([device position] == cameraPosition)
//      {
//          _inputCamera = device;
//      }
//  }

//上面代码注释掉换成下面

    _inputCamera = [self wjx_getCaptureDeviceWithPosition:cameraPosition];
    
    if (!_inputCamera) {
        return nil;
    }

    /*
        ...省略
    **/
}
    
//第2处
- (void)rotateCamera
{
    /*
        ...省略
    **/
    
//    AVCaptureDevice *backFacingCamera = nil;
//    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
//  for (AVCaptureDevice *device in devices) 
//  {
//      if ([device position] == currentCameraPosition)
//      {
//          backFacingCamera = device;
//      }
//  }
//上面代码注释掉换成下面

    AVCaptureDevice *backFacingCamera = [self wjx_getCaptureDeviceWithPosition:currentCameraPosition];
    newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error];

    /*
        ...省略
    **/
}

相关文章

  • GPUImage概览

    读GPUImage源码,深入了解GPUImage原理及OpenGL ES。 关于GPUImage GPUImage...

  • iOS 自定义UITextField背景

    了解更多,请关注我的微信公众号:mellong 设置背景图片 修改文字边距 设置好图片后输入文字会发现左边的文字和...

  • GPUImage

    1.添加GPUImage静态库 关于导入GPUimage到工程已经简单使用:只能用于真机关于GPUImage的导入...

  • iOS音视频学习

    GPUImage 可以实现的功能(基于GPU) 视频合成 视频加水印 修改图片 使用GPUImage拍照 录制视频...

  • 什么速度?小米9手机2月26日卖货已全部发出

    3月2日消息 小米9在2月20日发布,采用了全曲面全息幻彩机身,搭载骁龙855,索尼4800万超广角微距三摄,20...

  • GPUImage图片处理的使用

    关于GPUImage 这里直接引用官方描述:The GPUImage framework is a BSD-lic...

  • 超广角镜头

    记得刚准备买单反的时候,朋友曾建议配超广角镜头和超远摄镜头,甚至还需要微距镜头,理由是这样拍出来的照片更具...

  • GPUImage学习及相关资料

    Part one: 关于GPUImage 这里直接引用官方描述: The GPUImage framework i...

  • 2019-08-15~LaTeX相关

    页边距设置页边距设置 表格设置表格设置

  • UIBarButtonItem设置边距

    leftBarButtonItem设置左边距,rightBarButtonItem设置右边距

网友评论

      本文标题:关于GPUImage超广角微距设置修改

      本文链接:https://www.haomeiwen.com/subject/ehgvkjtx.html