Ver código fonte

1.横屏的横全屏开关调试

huangxiaodong 9 meses atrás
pai
commit
aecbd6ceec

+ 14 - 55
创维盒子/双子星云手机/cloudPhone/websocket/RCCommandHelp.m

@@ -1296,62 +1296,21 @@ withType:(BOOL)isUploadType
     //朱珠令验证  设置分辨率的宽高要求余8为零才能解码成功 20220221
     W_PHONE = ((int)(W_PHONE/8)) *8;
     H_PHONE = ((int)(H_PHONE/8)) *8;
-//
-//    //从iPhone 6开始适配
-//    NSString *phoneModel = [iTools getCurrentDeviceModel];
-//    if([phoneModel isEqualToString:@"iPhone 6"]
-//       ||[phoneModel isEqualToString:@"iPhone 6s"]
-//       ||[phoneModel isEqualToString:@"iPhone 7"]
-//       ||[phoneModel isEqualToString:@"iPhone 7s"]
-//       ||[phoneModel isEqualToString:@"iPhone 8"]
-//       ||[phoneModel isEqualToString:@"iPhone 8s"]
-//       ||[phoneModel isEqualToString:@"iPhone SE"])
-//    {//不行 可以用 1920 *1080  没有真机验证
-////         W_PHONE = 1334;
-////         H_PHONE = 750;
-//        H_PHONE = 1920;
-//        W_PHONE = 1080;
-//
-//    }
-//    else if ([phoneModel isEqualToString:@"iPhone 6 Plus"]
-//             ||[phoneModel isEqualToString:@"iPhone 7 Plus"]
-//             ||[phoneModel isEqualToString:@"iPhone 8 Plus"]
-//             ||[phoneModel isEqualToString:@"iPhone 6s Plus"]
-//             ||[phoneModel isEqualToString:@"iPhone 7s Plus"]
-//             ||[phoneModel isEqualToString:@"iPhone 8s Plus"])
-//    {
-//        H_PHONE = 1920;
-//        W_PHONE = 1080;
-//    }
-    
-//    else if ([phoneModel isEqualToString:@"iPhone X"]
-//             ||[phoneModel isEqualToString:@"iPhone XS"])
-//    {
-////        W_PHONE = 2436;
-////        H_PHONE = 1125;
-//    }
-//    else if ([phoneModel isEqualToString:@"iPhone XR"]
-//             ||[phoneModel isEqualToString:@"iPhone XS Max"])
-//    {//不用改
-//    }
-    
-    //
-    CGFloat scale = 1080.0/W_PHONE;
-    W_PHONE = 1080;//W_PHONE*scale;
-    H_PHONE = H_PHONE * scale;
-    H_PHONE = ((int)(H_PHONE/8)) *8;
-
-    //[RCGameCommondToStr setCurrentCouldPhone_W_PHONE:W_PHONE];
-    //[RCGameCommondToStr setCurrentCouldPhone_H_PHONE:H_PHONE];
-                
-    //不行
-//    CGFloat W_PHONE = 812;
-//    CGFloat H_PHONE = 375;
-    
 
-    //ok
-//    CGFloat W_PHONE = 1136;
-//    CGFloat H_PHONE = 640;
+    //
+    CGFloat scaleWH = (W_PHONE*1.0)/(H_PHONE*1.0);
+    if (scaleWH >1.0) {//横屏
+        CGFloat scale = 1080.0/H_PHONE;
+        H_PHONE = 1080;
+        W_PHONE = W_PHONE * scale;
+        W_PHONE = ((int)(W_PHONE/8)) *8;
+    }
+    else{//竖屏
+        CGFloat scale = 1080.0/W_PHONE;
+        W_PHONE = 1080;//W_PHONE*scale;
+        H_PHONE = H_PHONE * scale;
+        H_PHONE = ((int)(H_PHONE/8)) *8;
+    }
     
     return CGSizeMake(W_PHONE, H_PHONE);
 }

+ 1 - 0
创维盒子/双子星云手机/webRtc/view/webRtcPlayerBottomContrView.m

@@ -84,6 +84,7 @@
 #pragma mark 更新按钮区域
 - (void)updateFrameFunByIsLan:(BOOL)isLan
 {
+    HLog(@"更新推流页的底部区域 isLan:%d",isLan)
     if(isLan){
         
         [homeBtn mas_remakeConstraints:^(MASConstraintMaker *make) {

+ 49 - 10
创维盒子/双子星云手机/webRtc/webRtcPlayerViewController+AdjustPlayerViewFrame.m

@@ -57,14 +57,14 @@
     
     [self.bottomContrView mas_remakeConstraints:^(MASConstraintMaker *make) {
         make.height.mas_equalTo(40.f);
-        make.right.equalTo(self.mediaStream.mas_right);
+        make.right.mas_equalTo(0.f);
         if(fullScreenShow){
             make.bottom.mas_equalTo(0);
         }
         else{
             make.top.equalTo(self.mediaStream.mas_bottom);
         }
-        make.left.equalTo(self.mediaStream.mas_left);
+        make.left.mas_equalTo(0.f);
     }];
 
     [self.bottomContrView updateFrameFunByIsLan:NO];
@@ -86,25 +86,64 @@
     if (IPHONE_X){
         h_forPhoneTop = 44.f;
     }
-    CGFloat des_W = SCREEN_W<SCREEN_H?SCREEN_W:SCREEN_H;/*实际较小的数字*/
-    CGFloat des_H = (SCREEN_W>SCREEN_H?SCREEN_W:SCREEN_H) - h_forPhoneTop;/*实际较大的数字*/
+//    CGFloat des_W = SCREEN_W<SCREEN_H?SCREEN_W:SCREEN_H;/*实际较小的数字*/
+//    CGFloat des_H = (SCREEN_W>SCREEN_H?SCREEN_W:SCREEN_H) - h_forPhoneTop;/*实际较大的数字*/
+    
+//    [self.mediaStream mas_remakeConstraints:^(MASConstraintMaker *make) {
+//        make.bottom.mas_equalTo(0.f);
+//        make.width.mas_equalTo(des_W*w_h_rate);
+//        make.left.mas_equalTo(h_forPhoneTop + (des_H - h_forPhoneBottomView - des_W*w_h_rate)/2.f);
+//        make.top.mas_equalTo(0);
+//    }];
     
     [self.mediaStream mas_remakeConstraints:^(MASConstraintMaker *make) {
-        make.bottom.mas_equalTo(0.f);
-        make.width.mas_equalTo(des_W*w_h_rate);
-        make.left.mas_equalTo(h_forPhoneTop + (des_H - h_forPhoneBottomView - des_W*w_h_rate)/2.f);
-        make.top.mas_equalTo(0);
+        CGFloat scr_W = SCREEN_W;
+        CGFloat scr_H = SCREEN_H;
+        if (SCREEN_W < SCREEN_H){
+            scr_W = SCREEN_H;
+            scr_H = SCREEN_W;
+        }
+        
+        if(fullScreenShow){//全屏
+            make.left.mas_equalTo(0.f);
+            make.right.mas_equalTo(0.f);
+            make.bottom.mas_equalTo(0.f);
+            make.top.mas_equalTo(0.f);
+        }
+        else{//非全屏
+            if ((scr_W - scr_H*w_h_rate - 40.f) < 0){//空余宽度不满 40 (高不能满屏)
+                make.height.mas_equalTo((scr_W - 40.f)/w_h_rate);
+                make.width.mas_equalTo(scr_W - 40.f);
+                make.centerX.equalTo(self.view.mas_centerX);
+                make.left.mas_equalTo(0);
+            }
+            else if ((scr_W - scr_H*w_h_rate - 40.f*2) < 0){//空余宽度不满 80 (X不能居中)
+                make.height.mas_equalTo(scr_H);
+                make.width.mas_equalTo((scr_H)*w_h_rate);
+                make.centerY.equalTo(self.view.mas_centerX);
+                make.right.mas_equalTo(-40);
+            }
+            else{// 高满屏 X居中
+                make.height.mas_equalTo(scr_H);
+                make.top.mas_equalTo(0.f);
+                make.width.mas_equalTo(scr_H*w_h_rate);
+                make.centerX.equalTo(self.view.mas_centerX);
+            }
+        }
+        
     }];
     
+    
+    
     [self.bottomContrView mas_remakeConstraints:^(MASConstraintMaker *make) {
         make.width.mas_equalTo(h_forPhoneBottomView);
-        make.left.equalTo(self.mediaStream.mas_right);
         if(fullScreenShow){
             make.right.mas_equalTo(0);
         }
         else{
-            make.top.mas_equalTo(0);
+            make.left.equalTo(self.mediaStream.mas_right);
         }
+        make.top.mas_equalTo(0);
         make.bottom.mas_equalTo(0);
     }];
 

+ 32 - 17
创维盒子/双子星云手机/webRtc/webRtcPlayerViewController.m

@@ -65,6 +65,8 @@
     [[UIApplication sharedApplication] setStatusBarHidden:NO];
     
     [_mediaStream disconnect];
+    _mediaStream = nil;
+    
     [self enablePanRightBack];
     [self removeKVOObserverFun];
     ksharedAppDelegate.supportScreenRotateType = NO;
@@ -139,8 +141,8 @@
                     videoHeight:(NSInteger)phoneSize.height
                             fps:30
                         bitrate:3000
-                      cardWidth:0
-                     cardHeight:0
+                      cardWidth:0//1080//0
+                     cardHeight:0//1920//0
                     cardDensity:0
                           token:@"vclusters"];
     
@@ -157,7 +159,7 @@
         return;
     }
     
-    HLog(@"发起重连 relinkWebRtcFun")
+    HLog(@"发起重连 ......")
     mainBlock(^{
         [self showNewIndicatorWithCanBack:YES canTouch:NO];
         
@@ -515,33 +517,36 @@
     CGFloat tempRate = 0.0;
     //重新设置分辨率
     if(fullscreenType){
-//        NSString *commandStr = [RCCommandHelp commondToSetFullScreenPhoneSize];
-//        [self send_data:commandStr];
-        
         NSInteger cardDensity = 380;//480;//422;//380;//460;
+        CGSize size = [RCCommandHelp commondToSetFullScreenPhoneSizeBySize];
         
+        if(isLan){
+            if(size.width < size.height){
+                size = CGSizeMake(size.height,size.width);
+            }
+        }
         
-        CGSize size = [RCCommandHelp commondToSetFullScreenPhoneSizeBySize];
         [self setCardSize:size.width cardHeight:size.height cardDensity:cardDensity];
         
         tempRate = (size.width *1.0)/(size.height *1.0);
     }
     else{
-//        NSString *commondStr  = [RCCommandHelp setPhoneSizecommandWithWidth:1080 high:1920 dpi:480];
-//        //NSString *commondStr@"{\"data\":{\"height\":1920,\"width\":1080},\"type\":\"setPhoneSize\"}";
-//        [self send_data:commondStr];
-        [self setCardSize:1080 cardHeight:1920 cardDensity:480];
+        CGSize size = CGSizeMake(1080.0, 1920.0);
+        if(isLan){
+            size = CGSizeMake(1920.0, 1080.0);
+        }
+        [self setCardSize:(NSInteger)size.width cardHeight:(NSInteger)size.height cardDensity:480];
         
-        tempRate = 1080.0/1920.0;
+        tempRate = size.width/size.height;
     }
     
-    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+    //dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         if (tempRate > 1) {/*横屏*/
             [self setLanMas_makeWithImageRate:tempRate];
         }else{/*竖屏*/
             [self setPoMas_makeWithImageRate:tempRate];
         }
-    });
+   // });
 }
 
 #pragma mark -- /*推流中修改卡的分辨率*/
@@ -549,8 +554,18 @@
          cardHeight:(NSInteger)cardHeight
         cardDensity:(NSInteger)cardDensit
 {
-    [_mediaStream setCardSize:cardWidth cardHeight:cardHeight cardDensity:cardDensit];
-    [_mediaStream setVideoSize:cardWidth videoHeight:cardHeight];
+    
+    if(isLan){
+        HLog(@"云机屏幕 设置 宽:%ld 高:%ld",cardHeight,cardWidth);
+        [_mediaStream setCardSize:cardHeight cardHeight:cardWidth cardDensity:cardDensit];
+        [_mediaStream setVideoSize:cardHeight videoHeight:cardWidth];
+    }
+    else{
+        HLog(@"云机屏幕 设置 宽:%ld 高:%ld",cardWidth,cardHeight);
+        [_mediaStream setCardSize:cardWidth cardHeight:cardHeight cardDensity:cardDensit];
+        [_mediaStream setVideoSize:cardWidth videoHeight:cardHeight];
+    }
+    
 }
 
 #pragma mark -- /*通知添加与移除*/
@@ -600,7 +615,7 @@
 #pragma mark 监听到云机的宽高以及屏幕方向
 - (void)handlUIAfterGetCloudPhoneVideoWidth:(int)videoWidth videoHeight:(int)videoHeight rotation:(int)rotation
 {
-    HLog(@"云机屏幕 宽:%d 高:%d 横竖屏:%d",videoWidth,videoHeight,rotation);
+    HLog(@"云机屏幕 回调 宽:%d 高:%d 横竖屏:%d",videoWidth,videoHeight,rotation);
     
     CGFloat curRate = (CGFloat)videoWidth/(CGFloat)videoHeight;