lxy 1 年之前
父節點
當前提交
1045618475

+ 3 - 3
Example/LenzCameraNativeModuleForRN/LENZViewController.m

@@ -100,9 +100,9 @@
     NSMutableDictionary *dict = [NSMutableDictionary dictionary];
     dict[@"dataRetainedMode"] = @"retain";
     NSArray *array = @[
-//    @{@"flashMode": @"auto", @"isRemake":@(0),@"mode":@"continuous", @"quality":@(100),@"type":@"back"  },
-//    @{@"flashMode": @"auto", @"isRemake":@(0),@"mode":@"single", @"quality":@(100),@"type":@"back"  },
-    @{@"flashMode": @"auto", @"isRemake":@(1),@"mode":@"video", @"quality":@(100),@"type":@"back", @"videoQuality":@(720)},
+    @{@"flashMode": @"auto", @"isRemake":@(0),@"mode":@"continuous", @"quality":@(100),@"type":@"back"  },
+    @{@"flashMode": @"auto", @"isRemake":@(0),@"mode":@"single", @"quality":@(100),@"type":@"back"  },
+    @{@"flashMode": @"auto", @"isRemake":@(1),@"mode":@"video", @"quality":@(100),@"type":@"back", @"videoQuality":@(480)},
     @{@"flashMode": @"auto", @"isRemake":@(1),@"mode":@"panorama", @"quality":@(100),@"type":@"back", @"videoQuality":@(1080)},
     @{@"flashMode": @"auto", @"isRemake":@(1),@"mode":@"panoramaPlus", @"quality":@(100),@"type":@"back", @"videoQuality":@(480)}
     ];

+ 20 - 16
LenzCameraNativeModuleForRN/Classes/inner/CameraManager/CameraManager.m

@@ -39,16 +39,20 @@
     
     for (AVCaptureDeviceFormat *format in supportedFormats) {
         CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions((CMVideoFormatDescriptionRef)[format formatDescription]);
-        CMVideoDimensions bestVideoDimensions = CMVideoFormatDescriptionGetDimensions((CMVideoFormatDescriptionRef)[bestFormat formatDescription]);
-
-        if (((CGFloat)dimensions.width/(CGFloat)dimensions.height) == radio && dimensions.height <= desiredHeight) {
-
-            if(dimensions.width == 1080 && (model == SDK_CAPTURE_MODE_PANORAMA || model == SDK_CAPTURE_MODE_INTELLEGENCE_PANORAMA)) {
-                aspect = (CGFloat)dimensions.width / dimensions.height;
-                bestFormat = format;
-                break;
-            } else {
-                aspect = (CGFloat)dimensions.width / dimensions.height;
+        if (((CGFloat)dimensions.width/(CGFloat)dimensions.height) == radio && dimensions.height == desiredHeight) {
+            bestFormat = format;
+            break;
+        }
+    }
+    
+    [device lockForConfiguration:nil];
+    if (!bestFormat) {
+        //未找到 匹配格式 查找固定匹配格式 (720  1080  2160)
+        for (AVCaptureDeviceFormat *format in supportedFormats) {
+            CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions((CMVideoFormatDescriptionRef)[format formatDescription]);
+            CMVideoDimensions bestVideoDimensions = CMVideoFormatDescriptionGetDimensions((CMVideoFormatDescriptionRef)[bestFormat formatDescription]);
+            if (((CGFloat)dimensions.width/(CGFloat)dimensions.height) == radio &&
+                (dimensions.height == 720 || dimensions.height == 1080 || dimensions.height == 2160)) {
                 if (bestVideoDimensions.height <= dimensions.height) {
                     bestFormat = format;
                 }
@@ -56,20 +60,20 @@
         }
     }
     
-    [device lockForConfiguration:nil];
-    if(bestFormat) {
-        [device setActiveFormat:bestFormat];
-    } else {
+    if (!bestFormat) {
+        //未找到 固定格式 (720  1080  2160) 查找最佳格式(目标格式最近的分辨率)
         for (AVCaptureDeviceFormat *format in supportedFormats) {
             CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions((CMVideoFormatDescriptionRef)[format formatDescription]);
             CMVideoDimensions bestVideoDimensions = CMVideoFormatDescriptionGetDimensions((CMVideoFormatDescriptionRef)[bestFormat formatDescription]);
-            if (((CGFloat)dimensions.width/(CGFloat)dimensions.height) == radio) {
+            if (((CGFloat)dimensions.width/(CGFloat)dimensions.height) == radio && dimensions.height <= desiredHeight ) {
                 if (bestVideoDimensions.height <= dimensions.height) {
                     bestFormat = format;
-                    break;
                 }
             }
         }
+    }
+    
+    if(bestFormat) {
         [device setActiveFormat:bestFormat];
     }