Agora 屏幕共享推流不能旋转

rotation随着屏幕会旋转,但是推流外部显示的始终是竖屏,没有旋转。这是为什么呀

CVImageBufferRef videoFrame = CMSampleBufferGetImageBuffer(sampleBuffer);
    if (videoFrame == nil) {
        return;
    }
    int rotation = 0;
    if (@available(iOS 11.0, *)) {
        NSNumber * orientation = CMGetAttachment(sampleBuffer, (CFStringRef)RPVideoSampleOrientationKey, nil);
        CGImagePropertyOrientation ori = orientation.intValue;
        switch (ori) {
            case kCGImagePropertyOrientationUp:
            case kCGImagePropertyOrientationUpMirrored:
                rotation = 0;
                break;
            case kCGImagePropertyOrientationDown:
            case kCGImagePropertyOrientationDownMirrored:
                rotation = 180;
                break;
            case kCGImagePropertyOrientationLeft:
            case kCGImagePropertyOrientationLeftMirrored:
                rotation = 90;
                break;
            case kCGImagePropertyOrientationRight:
            case kCGImagePropertyOrientationRightMirrored:
                rotation = 270;
                break;
            default:
                break;
        }
        CMTime time = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
        AgoraVideoFrame * frame = [AgoraVideoFrame new];
        frame.format = 12;
        frame.time = time;
        frame.textureBuf = videoFrame;
        frame.rotation =rotation;
        [self.sharedAgoraEngine pushExternalVideoFrame:frame];
        
    }

你说的推流是指推流到 CDN 吗?能否提供运行截图,看下当前效果是怎样的,以及你的预期效果是什么呢?

我预期手机旋转视图也会旋转,现在横屏画面不是横的

这是本地预览还是对端看到的画面?

你看一下 orientaionMode 设置的是什么?
https://docs.agora.io/cn/Interactive%20Broadcast/video_rotation_apple?platform=iOS

这个是我们服务器看到的,我旁路推流到自己的服务器是这样
设置的: AgoraVideoOutputOrientationModeFixedPortrait
其他两个也试过了,还是一样。

  1. 主播端本地预览是否也是这样?还是说本地预览是正常的?
  2. 主播端有没有设置转码?

一般而言, SDK 主播端 + 旁路推流(不转码)组合,编码参数选择

  • {“横屏模式”: “orientationMode :LandScape”}
  • {“竖屏模式”:“orientationMode-Portrait”}

这样可以避免横竖屏问题。

没有转码,这是设置的全部参数,主播端是录屏不可能有问题

       AgoraRtcEngineKit * kit = [AgoraRtcEngineKit sharedEngineWithAppId:KeyCenter.AppId delegate:self];
        [kit setChannelProfile:AgoraChannelProfileLiveBroadcasting];
        [kit setClientRole:AgoraClientRoleBroadcaster];
        [kit enableVideo];
        [kit setExternalVideoSource:YES useTexture:YES pushMode:YES];
        AgoraVideoEncoderConfiguration * videoConfig = [[AgoraVideoEncoderConfiguration alloc] initWithSize:[self videoDimension] frameRate:AgoraVideoFrameRateFps24 bitrate:AgoraVideoBitrateStandard orientationMode:AgoraVideoOutputOrientationModeAdaptative];
        videoConfig.mirrorMode = AgoraVideoMirrorModeAuto;
        videoConfig.orientationMode = AgoraVideoOutputOrientationModeFixedPortrait;
        [kit setVideoEncoderConfiguration:videoConfig];
        [kit setAudioProfile:AgoraAudioProfileMusicStandardStereo scenario:AgoraAudioScenarioDefault];
        [AgoraAudioProcessing registerAudioPreprocessing:kit];
        [kit setRecordingAudioFrameParametersWithSampleRate:_audioSampleRate channel:_audioChannels mode:AgoraAudioRawFrameOperationModeReadWrite samplesPerCall:1024];
        [kit setParameters:@"{\"che.audio.external_device\":true}"];
        [kit muteAllRemoteVideoStreams:YES];
        [kit muteAllRemoteAudioStreams:YES];

提供一下测试的频道号、屏幕共享 uid,我们来查下后台数据。

频道号:222 uid:12

后台旁路推流部分的数据看起来没有什么异常。你让一个观众用户加入频道,看下频道内观看主播画面是否正常?有没有旋转?

观众是可以的,我在看下我们这边为什么旁路推流不行。晚点回复您,谢谢

好。

如果观众是可以的,那问题应该还是出在旁路推流部分。你可以提供以下信息,我们这边可以帮助你一起排查:

  1. 请让主播、频道内观众一起加入频道,并且让主播开启旁路推流,旁路观众拉流观看;
  2. 提供主播的 SDK 日志。

您好, 观众看是正常的,旁路推流还是那种样式,目前不知道哪里的问题。
这是主播日志:
INFO (15:16:21:600 | 1) 24843; [rp] {“rtc.log_file”:"/var/mobile/Containers/Data/PluginKitPlugin/674EF15B-491C-4C43-A4C9-52A03F7E77BD/Documents/dr.log"}
Local Date: Wed Jun 17 15:16:21 2020
Build info: Apr 22 2020 17:14:56 r

INFO (15:16:21:600 | 0) 4611; API call to join channel ‘222’ uid 12, SDK ver 3.0.0.2 build 300, device info ‘iPhone/iPhone10,1/iOS/13.4.1’
INFO (15:16:21:600 | 0) 4611; API call to initialize rtc channel 222
INFO (15:16:21:604 | 4) 24843; [rp] {“rtc.log_filter”:15}
INFO (15:16:21:604 | 0) 24843; [rp] {“rtc.log_filter”:15}
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.profile”:{“config”:3,“scenario”:0}}
INFO (15:16:21:604 | 0) 24843; audioProfile lambda: Audio Profile is set to: (config = 3, scenario = 0)
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(0):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(1):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 0 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(2):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 1 1 1 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(3):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 0 0 0 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(4):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(5):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 0 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(6):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(7):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 1 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(8):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 0 0 1 0
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.set_capture_raw_audio_format”:{“sampleRate”:48000,“channelCnt”:2,“mode”:2,“samplesPerCall”:1024}}
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.profile”:{“config”:3,“scenario”:0}}
INFO (15:16:21:604 | 0) 24843; audioProfile lambda: Audio Profile is set to: (config = 3, scenario = 0)
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(0):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(1):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 0 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(2):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 1 1 1 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(3):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 0 0 0 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(4):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(5):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 0 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(6):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(7):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 1 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(8):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 0 0 1 0
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.external_device”:true}
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.set_capture_raw_audio_format”:{“sampleRate”:48000,“channelCnt”:2,“mode”:2,“samplesPerCall”:1024}}
INFO (15:16:21:604 | 0) 24843; [rp] {“rtc.video.mute_peers”:true}
INFO (15:16:21:604 | 0) 24843; [rp] {“rtc.audio.mute_peers”:true}
INFO (15:16:21:605 | 1) 24843; [dns] parsed ip 118.190.148.38
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 101.201.199.195
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 150.138.153.21
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 14.17.81.121
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 61.147.236.150
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 42.81.57.169
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 115.236.96.7
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 183.134.68.99
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 117.21.184.25
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 114.236.93.137
INFO (15:16:21:605 | 0) 24843; [rs] dns parse result code: 0, servers size: 8
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 150.138.153.21:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 14.17.81.121:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 61.147.236.150:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 42.81.57.169:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 115.236.96.7:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 183.134.68.99:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 117.21.184.25:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 114.236.93.137:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 101.201.199.195
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 118.190.148.38
INFO (15:16:21:605 | 0) 24843; [ap] onParsedDns with err 0, 101.201.199.195, 118.190.148.38,
INFO (15:16:21:606 | 1) 24843; [ap/t] tcp connected with 0x283e9fe00
INFO (15:16:21:606 | 0) 24843; [ap] CdsTdsRequest, session_id: E9BADCBD921B4795A32442BFF99460F6, detail: iPhone/iPhone10,1/iOS/13.4.1, vendor: d62f5b47e9ad4bcba99ab0196d8ea8fc, system: iOS/13.4.1, version: 3.0.0.2, install_id: D8FBE7C57D0748FD922

Local Date: Wed Jun 17 15:16:21 2020
Build info: Apr 22 2020 17:14:56 r

INFO (15:16:21:600 | 1) 24843; [rp] {“rtc.log_file”:"/var/mobile/Containers/Data/PluginKitPlugin/674EF15B-491C-4C43-A4C9-52A03F7E77BD/Documents/dr.log"}
Local Date: Wed Jun 17 15:16:21 2020
Build info: Apr 22 2020 17:14:56 r

INFO (15:16:21:600 | 0) 4611; API call to join channel ‘222’ uid 12, SDK ver 3.0.0.2 build 300, device info ‘iPhone/iPhone10,1/iOS/13.4.1’
INFO (15:16:21:600 | 0) 4611; API call to initialize rtc channel 222
INFO (15:16:21:604 | 4) 24843; [rp] {“rtc.log_filter”:15}
INFO (15:16:21:604 | 0) 24843; [rp] {“rtc.log_filter”:15}
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.profile”:{“config”:3,“scenario”:0}}
INFO (15:16:21:604 | 0) 24843; audioProfile lambda: Audio Profile is set to: (config = 3, scenario = 0)
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(0):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(1):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 0 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(2):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 1 1 1 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(3):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 0 0 0 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(4):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(5):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 0 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(6):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(7):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 1 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(8):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 0 0 1 0
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.set_capture_raw_audio_format”:{“sampleRate”:48000,“channelCnt”:2,“mode”:2,“samplesPerCall”:1024}}
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.profile”:{“config”:3,“scenario”:0}}
INFO (15:16:21:604 | 0) 24843; audioProfile lambda: Audio Profile is set to: (config = 3, scenario = 0)
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(0):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(1):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 0 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(2):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 1 1 1 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(3):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 0 0 0 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(4):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(5):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 0 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(6):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 1 0 1 0
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(7):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 1 1 1 1 1 1
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: scenario(8):
INFO (15:16:21:604 | 0) 24843; updateScenarioConfig: 0 0 0 0 1 0
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.external_device”:true}
INFO (15:16:21:604 | 0) 24843; [rp] {“che.audio.set_capture_raw_audio_format”:{“sampleRate”:48000,“channelCnt”:2,“mode”:2,“samplesPerCall”:1024}}
INFO (15:16:21:604 | 0) 24843; [rp] {“rtc.video.mute_peers”:true}
INFO (15:16:21:604 | 0) 24843; [rp] {“rtc.audio.mute_peers”:true}
INFO (15:16:21:605 | 1) 24843; [dns] parsed ip 118.190.148.38
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 101.201.199.195
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 150.138.153.21
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 14.17.81.121
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 61.147.236.150
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 42.81.57.169
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 115.236.96.7
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 183.134.68.99
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 117.21.184.25
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 114.236.93.137
INFO (15:16:21:605 | 0) 24843; [rs] dns parse result code: 0, servers size: 8
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 150.138.153.21:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 14.17.81.121:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 61.147.236.150:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 42.81.57.169:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 115.236.96.7:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 183.134.68.99:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 117.21.184.25:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [rs] updateServers 114.236.93.137:8000, priority 2
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 101.201.199.195
INFO (15:16:21:605 | 0) 24843; [dns] parsed ip 118.190.148.38
INFO (15:16:21:605 | 0) 24843; [ap] onParsedDns with err 0, 101.201.199.195, 118.190.148.38,
INFO (15:16:21:606 | 1) 24843; [ap/t] tcp connected with 0x283e9fe00
INFO (15:16:21:606 | 0) 24843; [ap] CdsTdsRequest, session_id: E9BADCBD921B4795A32442BFF99460F6, detail: iPhone/iPhone10,1/iOS/13.4.1, vendor: d62f5b47e9ad4bcba99ab0196d8ea8fc, system: iOS/13.4.1, version: 3.0.0.2, install_id: D8FBE7C57D0748FD922

这个日志好像不全, join channel success 都没有搜到诶。

我这样存储的log,两种方式打印出来的log都没有 join channel success


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
   NSString *documentDirectory = [paths objectAtIndex:0];
   NSString *fileName = [NSString stringWithFormat:@"dr.log"];
   NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName];
  [kit setLogFile:logFilePath];
   [kit setLogFilter:AgoraLogFilterInfo];//之前的
// 改为  [kit setLogFilter:AgoraLogFilterDebug]; 

下面是debug日志:
Local Date: Wed Jun 17 16:00:03 2020
Build info: Apr 22 2020 17:14:56 r

INFO (16: 0: 3:450 | 2) 25359; [rp] {“rtc.log_filter”:15}
INFO (16: 0: 3:450 | 0) 25359; [rp] {“rtc.log_file”:"/var/mobile/Containers/Data/PluginKitPlugin/E5582EBD-B116-4230-9662-BDE566E264CC/Documents/dr.log"}
Local Date: Wed Jun 17 16:00:03 2020
Build info: Apr 22 2020 17:14:56 r

INFO (16: 0: 3:454 | 4) 25359; [rp] {“rtc.log_filter”:15}
INFO (16: 0: 3:454 | 0) 25359; [rp] {“che.audio.profile”:{“config”:3,“scenario”:0}}
INFO (16: 0: 3:455 | 1) 25359; audioProfile lambda: Audio Profile is set to: (config = 3, scenario = 0)
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(0):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 1 0 1 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(1):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 1 1 1 0 1 1
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(2):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 1 1 1 1 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(3):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 0 0 0 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(4):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 1 0 1 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(5):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 1 1 1 0 1 1
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(6):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 1 0 1 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(7):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 1 1 1 1 1 1
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(8):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 0 0 1 0
INFO (16: 0: 3:455 | 0) 25359; [rp] {“che.audio.profile”:{“config”:3,“scenario”:0}}
INFO (16: 0: 3:455 | 0) 25359; audioProfile lambda: Audio Profile is set to: (config = 3, scenario = 0)
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(0):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 1 0 1 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(1):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 1 1 1 0 1 1
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(2):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 1 1 1 1 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(3):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 0 0 0 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(4):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 1 0 1 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(5):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 1 1 1 0 1 1
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(6):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 1 0 1 0
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(7):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 1 1 1 1 1 1
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: scenario(8):
INFO (16: 0: 3:455 | 0) 25359; updateScenarioConfig: 0 0 0 0 1 0
INFO (16: 0: 3:455 | 0) 25359; [rp] {“che.audio.set_capture_raw_audio_format”:{“sampleRate”:48000,“channelCnt”:2,“mode”:2,“samplesPerCall”:1024}}
INFO (16: 0: 3:455 | 0) 25359; [rp] {“che.audio.external_device”:true}
INFO (16: 0: 3:456 | 1) 25359; [rp] {“rtc.video.mute_peers”:true}
INFO (16: 0: 3:456 | 0) 25359; [rp] {“rtc.audio.mute_peers”:true}
INFO (16: 0: 3:456 | 0) 25359; [rp] {“che.audio.set_capture_raw_audio_format”:{“sampleRate”:48000,“channelCnt”:2,“mode”:2,“samplesPerCall”:1024}}
INFO (16: 0: 3:456 | 0) 25359; [ap/u] **responsed from 112.126.96.46:25000, CDS(8).
INFO (16: 0: 3:456 | 0) 25359; [rlbs/u] responsed from 47.107.39.93:9700 with servers 27.148.208.8:8913
INFO (16: 0: 3:456 | 0) 25359; [rs] updateServers 27.148.208.8:8913, priority 3
INFO (16: 0: 3:456 | 0) 25359; [rs] updateServers 58.220.220.209:8913, priority 3
INFO (16: 0: 3:456 | 0) 25359; [rs] updateServers 27.148.194.71:8913, priority 3
INFO (16: 0: 3:457 | 1) 25359; [ap/u] **responsed from 112.126.96.46:25000, TDS(64).
INFO (16: 0: 3:457 | 0) 25359; [ap/u] **responsed from 3.0.163.78:1080, TDS(64).
INFO (16: 0: 3:461 | 4) 25359; [rp] {“che.audio.keep.audio_category”:“AVAudioSessionCategorySoloAmbient”}
INFO (16: 0: 3:461 | 0) 25359; [rp] {“che.audio.keep.audio_mode”:“AVAudioSessionModeDefault”}
INFO (16: 0: 3:462 | 1) 25359; doStopLastmileProbeTest
INFO (16: 0: 3:462 | 0) 25359; CALL BEGIN: appid:'d6*************************fc’ cname:‘222’ info:’’ sid:‘D0E434B9C63446B39877351594F045A6’
INFO (16: 0: 3:462 | 0) 25359; addRef of media engine, ref=1
INFO (16: 0: 3:462 | 0) 17675; API call to join channel ‘222’ uid 12, SDK ver 3.0.0.2 build 300, device info ‘iPhone/iPhone10,1/iOS/13.4.1’
INFO (16: 0: 3:463 | 1) 25359; [che] create chat engine, ctx:0x0
INFO (16: 0: 3:464 | 1) 25359; [MYDEBUG] large group call false
INFO (16: 0: 3:464 | 0) 25359; setupMediaEngineMode(): Hardware decoding true
INFO (16: 0: 3:464 | 0) 25359; setupMediaEngineMode: mode 2
WARN (16: 0: 3:464 | 0) 25359; setupMediaEngineMode: skip updateClientRole as audio engine not created, mode 2
INFO (16: 0: 3:464 | 0) 25359; engine git commit version:706a622a09 and branch:(HEAD
INFO (16: 0: 3:476 | 12) 25359; output: kPlatformDefaultAudio
INFO (16: 0: 3:476 | 0) 25359; [adm][s] AudioDeviceIOS: ctor<NSThread: 0x2823e8ec0>{number = 6, name = (null)}
INFO (16: 0: 3:489 | 13) 25359; audio jitterbuffer new smooth
INFO (16: 0: 3:500 | 11) 38403; Thread with name:AudioFileDecoderThread started
INFO (16: 0: 3:501 | 1) 25359; OutputMixer: start audio file decoder thread successfully
INFO (16: 0: 3:503 | 2) 26883; Thread with name:external_audio_module_thread started
INFO (16: 0: 3:508 | 5) 38839; Thread with name:WebRtc_event_timer_thread started
INFO (16: 0: 3:510 | 2) 25359; StereoPlayoutIsAvailable(), output: available=0
ERROR (16: 0: 3:510 | 0) 25359; failed to enable stereo playout
WARN (16: 0: 3:510 | 0) 25359; InitADM() failed to set mono/stereo playout mode (error=8090)
INFO (16: 0: 3:510 | 0) 25359; StereoRecordingIsAvailable(), output: available=0
ERROR (16: 0: 3:510 | 0) 25359; failed to enable stereo recording
WARN (16: 0: 3:510 | 0) 25359; InitADM() failed to set mono/stereo recording mode (error=8090)
INFO (16: 0: 3:510 | 0) 37895; Thread with name:EngineMonitorThread started
WARN (16: 0: 3:511 | 1) 25359; enableLocalRecordingDevice: enable 1 already set
INFO (16: 0: 3:511 | 0) 25359; setMuteStatus, muted: Off
INFO (16: 0: 3:511 | 0) 25359; setMuteOutput, muted: false
ERROR (16: 0: 3:511 | 0) 25359; Set Audio Session Limitation not supported on this platform
INFO (16: 0: 3:511 | 0) 41767; Thread with name:AudioAsyncTask started
INFO (16: 0: 3:513 | 2) 25359; Audio Engine Init success, mSpecMode 2
INFO (16: 0: 3:515 | 2) 25359; Available number of cores:6
INFO (16: 0: 3:521 | 6) 25359; PipelineManager::SetDest engine = 0x10781e800
INFO (16: 0: 3:521 | 0) 25359; CreateVideoSendTrack
INFO (16: 0: 3:522 | 1) 37635; Thread with name:VideoAsyncTask started
INFO (16: 0: 3:522 | 0) 25359; init: feature prerotation enabled
INFO (16: 0: 3:565 | 43) 25359; RefreshCameraList: found 2 cameras
INFO (16: 0: 3:574 | 9) 25359; Camera 0: name Back Camera id com.apple.avfoundation.avcapturedevice.built-in_video:0
INFO (16: 0: 3:575 | 1) 25359; Camera 1: name Front Camera id com.apple.avfoundation.avcapturedevice.built-in_video:1
INFO (16: 0: 3:575 | 0) 25359; Agora Engine video codec set to standard mode role mode 2
INFO (16: 0: 3:575 | 0) 25359; Agora Engine video codec index 1
INFO (16: 0: 3:575 | 0) 25359; Agora Engine video stream type = 0
INFO (16: 0: 3:577 | 2) 27419; Thread with name:VideoEncodeThread started
INFO (16: 0: 3:577 | 0) 25359; Device type: 1008
INFO (16: 0: 3:577 | 0) 25359; Hardware encoding false
INFO (16: 0: 3:577 | 0) 25359; last unique frame idx: -1 - -1
INFO (16: 0: 3:577 | 0) 25359; Device type: 1008
INFO (16: 0: 3:577 | 0) 25359; EncoderWrapper::Create hardware_ = 0, hardware_low_ = 0
INFO (16: 0: 3:577 | 0) 25359; low bit rate limit 3758096384
INFO (16: 0: 3:577 | 0) 25359; dont need to increase unique frame idx
INFO (16: 0: 3:577 | 0) 25359; the init unique frame idx: -1 - -1
INFO (16: 0: 3:578 | 1) 27675; Thread with name:VideoProcessThread started
INFO (16: 0: 3:578 | 0) 25359; setCodec: index=1 width=640 height=360 framerate=15
INFO (16: 0: 3:578 | 0) 25359; setCodec: Intra Request = 0
INFO (16: 0: 3:578 | 0) 36875; Thread with name:VideoEncodeThread started
INFO (16: 0: 3:578 | 0) 25359; Device type: 1008
INFO (16: 0: 3:578 | 0) 25359; Hardware encoding false
INFO (16: 0: 3:578 | 0) 25359; last unique frame idx: -1 - -1
INFO (16: 0: 3:578 | 0) 25359; Device type: 1008
INFO (16: 0: 3:578 | 0) 25359; EncoderWrapper::Create hardware_ = 0, hardware_low_ = 0
INFO (16: 0: 3:578 | 0) 25359; low bit rate limit 3758096384
INFO (16: 0: 3:578 | 0) 25359; set last big unique frame idx: -1
INFO (16: 0: 3:578 | 0) 25359; set last small unique frame idx: -1
INFO (16: 0: 3:578 | 0) 25359; the init unique frame idx: -1 - -1
INFO (16: 0: 3:578 | 0) 25359; h264WebInteropEnable: enable 0
INFO (16: 0: 3:578 | 0) 25359; setCaptureDevice: index=1
INFO (16: 0: 3:578 | 0) 25359; setMaxVideoBitrate: max bitrate=0
INFO (16: 0: 3:578 | 0) 25359; [setupParameterObservers:1636] setting of localViewMirrorSetting[] is invalid!
INFO (16: 0: 3:578 | 0) 25359; [operator():1662] m_context.parameters.video.mirrorMode: json is invalid! value:0x0
INFO (16: 0: 3:578 | 0) 25359; VideoEngine::setViewOrientation for uid 0 orientation 1
INFO (16: 0: 3:578 | 0) 25359; setViewOrientation: called from sdk, uid(0) ori(1)
INFO (16: 0: 3:578 | 0) 25359; Setting video fec method 2, real using 2
INFO (16: 0: 3:578 | 0) 25359; SetBandwidthAgressiveLevel to 3.
INFO (16: 0: 3:578 | 0) 25359; dynamic sending rate control set to 2.

INFO (16: 0: 3:579 | 1) 25359; videoEngine created and initialize here
INFO (16: 0: 3:579 | 0) 1031; UIApplicationState observer initialized: 2
INFO (16: 0: 3:579 | 0) 1031; UIApplicationStateActive check timer started
INFO (16: 0: 3:579 | 0) 25359; CreateVideoSendTrack
INFO (16: 0: 3:579 | 0) 25359; [MIO] updateCapturer: (0x0), type:(1)
INFO (16: 0: 3:579 | 0) 25359; CreateAgoraDefaultCapture: type=0
INFO (16: 0: 3:579 | 0) 25359; VideoSendTrackImpl::UpdateCapturer capturer=0x2815ce440
INFO (16: 0: 3:579 | 0) 25359; CreateVideoCapturer: interface=0x2815ce440
INFO (16: 0: 3:579 | 0) 25359; [MIO] updateLocalRender: (0x0), type:(1)
INFO (16: 0: 3:579 | 0) 25359; CreateAgoraDefaultRender
INFO (16: 0: 3:579 | 0) 25359; VideoSendTrackImpl::UpdateRenderer, renderer=0x2815b2da0
INFO (16: 0: 3:579 | 0) 25359; CreateVideoRenderer: interface=0x2815b2da0
INFO (16: 0: 3:579 | 0) 25359; [MIO] video send track prepared !!
INFO (16: 0: 3:579 | 0) 25359; [che] applyVideoProfile: 640x360 15 fps -1 minFps 400 kbps, min -1 kbps orientationMode 0 degradationPrefer 0 mirrorMode 0
INFO (16: 0: 3:580 | 1) 25359; validateVideoParameters: validate video parameters resolution 640x360, fps 15, rate 400000
INFO (16: 0: 3:580 | 0) 25359; enableMirrorMode: enable=0
INFO (16: 0: 3:580 | 0) 25359; setMaxVideoBitrate: max bitrate=400000
INFO (16: 0: 3:580 | 0) 37635; setCodecRates: set frame rate to 15
INFO (16: 0: 3:580 | 0) 37635; setCodec: index=1 width=640 height=360 framerate=15
INFO (16: 0: 3:580 | 0) 37635; setCodec: Intra Request = 0
INFO (16: 0: 3:591 | 11) 37635; Device type: 1008
INFO (16: 0: 3:591 | 0) 36879; Thread with name:VideoEncodeThread started
INFO (16: 0: 3:591 | 0) 37635; Hardware encoding false
INFO (16: 0: 3:591 | 0) 37635; last unique frame idx: -1 - -1
INFO (16: 0: 3:591 | 0) 37635; Device type: 1008
INFO (16: 0: 3:591 | 0) 37635; EncoderWrapper::Create hardware
= 0, hardware_low_ = 0
INFO (16: 0: 3:591 | 0) 37635; low bit rate limit 0
INFO (16: 0: 3:591 | 0) 37635; set last big unique frame idx: -1
INFO (16: 0: 3:591 | 0) 37635; set last small unique frame idx: -1
INFO (16: 0: 3:591 | 0) 37635; the init unique frame idx: -1 - -1
INFO (16: 0: 3:591 | 0) 37635; SetTargetWidthHeight width:640, height:360
INFO (16: 0: 3:591 | 0) 37635; setCodecResolution: set to 640 x 360
INFO (16: 0: 3:591 | 0) 25359; Set broadcast min br to -1.
INFO (16: 0: 3:591 | 0) 25359; [che] chat engine initialized
INFO (16: 0: 3:591 | 0) 25359; [time] process EngineInitialize takes 129
INFO (16: 0: 3:623 | 32) 25359; adjustCodecFrameRates: Cannot adjust frame rate when VQC is on
INFO (16: 0: 3:624 | 1) 25359; [tactics] version:3.0.0.2 maxBitrate:400 640X360 15 fps needHandle:1
INFO (16: 0: 3:624 | 0) 25359; [tactics] config json version:20150101-0000 duallinkd:true poor:0
INFO (16: 0: 3:624 | 0) 25359; [tactics] parse config for beckon error for tactics size:15
INFO (16: 0: 3:626 | 2) 25359; [vocs] vocs initialized
INFO (16: 0: 3:626 | 0) 25359; [netob] switch all video mute status mute 1
INFO (16: 0: 3:626 | 0) 25359; reInit: reset mSpecMode to -1
INFO (16: 0: 3:626 | 0) 25359; [cm] reset channelProfile to NASA(CHANNEL_PROFILE_LIVE_BROADCASTING)
INFO (16: 0: 3:626 | 0) 25359; add ping address 10.9.33.254
INFO (16: 0: 3:627 | 1) 25359; PING 10.9.33.254:0 16(44) bytes of data
INFO (16: 0: 3:629 | 2) 25359; CacheManager: save cache to storage elapsed 2
INFO (16: 0: 3:629 | 0) 25359; [cm] emit join channel signal, size=4
INFO (16: 0: 3:629 | 0) 25359; [cm] connection state changed from 1 to 2
INFO (16: 0: 3:630 | 1) 25359; adjustCodecFrameRates: Cannot adjust frame rate when VQC is on
INFO (16: 0: 3:630 | 0) 25359; [tactics] version:3.0.0.2 maxBitrate:400 640X360 15 fps needHandle:1
INFO (16: 0: 3:630 | 0) 25359; [vocs] lookup channel…
INFO (16: 0: 3:630 | 0) 25359; [vocs] selected: 52.52.84.170:8000
INFO (16: 0: 3:630 | 0) 25359; connecting to 52.52.84.170:8000 handle 650dc30, 29
INFO (16: 0: 3:630 | 0) 25359; [vocs] report bitrate: a/v/t: 56/400/456
INFO (16: 0: 3:630 | 0) 25359; [vocs] creating channel with 52.52.84.170:8000, ts 1592380803630…
INFO (16: 0: 3:630 | 0) 25359; [vocs] selected: 112.126.96.46:1080
INFO (16: 0: 3:630 | 0) 25359; [vocs] report bitrate: a/v/t: 56/400/456
INFO (16: 0: 3:630 | 0) 25359; [vocs] creating channel with 112.126.96.46:1080, ts 1592380803630…
INFO (16: 0: 3:630 | 0) 25359; [vocs] selected: 3.0.163.78:25000
INFO (16: 0: 3:630 | 0) 25359; [vocs] report bitrate: a/v/t: 56/400/456
INFO (16: 0: 3:630 | 0) 25359; [vocs] creating channel with 3.0.163.78:25000, ts 1592380803630…
INFO (16: 0: 3:630 | 0) 25359; [rp] {“che.audio.external_device”:true}
INFO (16: 0: 3:631 | 1) 25359; [rp] {“rtc.video.mute_peers”:true}
INFO (16: 0: 3:631 | 0) 25359; [netob] switch all video mute status mute 1
INFO (16: 0: 3:631 | 0) 25359; [rp] {“rtc.audio.mute_peers”:true}
INFO (16: 0: 3:631 | 0) 25359; [rp] {“che.audio.keep.audio_category”:“AVAudioSessionCategorySoloAmbient”}
INFO (16: 0: 3:631 | 0) 25359; [rp] {“che.audio.keep.audio_mode”:“AVAudioSessionModeDefault”}
ERROR (16: 0: 3:631 | 0) 25359; failed to join channel due to NOT in IDLE
INFO (16: 0: 3:631 | 0) 25359; [dns] parsed ip 101.201.199.195
INFO (16: 0: 3:631 | 0) 25359; [dns] parsed ip 118.190.148.38
INFO (16: 0: 3:631 | 0) 25359; [dns] parsed ip 118.190.148.38
INFO (16: 0: 3:631 | 0) 25359; [dns] parsed ip 101.201.199.195
INFO (16: 0: 3:652 | 21) 7427; reset codec resolution
INFO (16: 0: 3:652 | 0) 37635; setCodecResolution: set to 360 x 640
INFO (16: 0: 3:652 | 0) 37635; setCodec: index=1 width=360 height=640 framerate=15
INFO (16: 0: 3:652 | 0) 37635; setCodec: Intra Request = 0
WARN (16: 0: 3:652 | 0) 37635; setCodec: codec resolution width (360) < height (640)
INFO (16: 0: 3:663 | 11) 36883; Thread with name:VideoEncodeThread started
INFO (16: 0: 3:663 | 0) 37635; Device type: 1008
INFO (16: 0: 3:663 | 0) 37635; Hardware encoding false
INFO (16: 0: 3:663 | 0) 37635; last unique frame idx: -1 - -1
INFO (16: 0: 3:663 | 0) 37635; Device type: 1008
INFO (16: 0: 3:663 | 0) 37635; EncoderWrapper::Create hardware
= 0, hardware_low
= 0
INFO (16: 0: 3:663 | 0) 37635; low bit rate limit 0
INFO (16: 0: 3:663 | 0) 37635; set last big unique frame idx: -1
INFO (16: 0: 3:663 | 0) 37635; set last small unique frame idx: -1
INFO (16: 0: 3:663 | 0) 37635; the init unique frame idx: -1 - -1
INFO (16: 0: 3:663 | 0) 37635; SetTargetWidthHeight width:360, height:640
INFO (16: 0: 3:690 | 27) 25359; [vocs/u] **responsed from 112.126.96.46:1080, 3 vos, elapsed 250, server ts 1592380803646, wan ip 119.137.55.5
INFO (16: 0: 3:690 | 0) 25359; [vos] added server: 183.2.233.69:4004
INFO (16: 0: 3:690 | 0) 25359; [vos] added server: 14.17.81.114:4012
INFO (16: 0: 3:690 | 0) 25359; [vos] added server: 121.12.98.146:4011
INFO (16: 0: 3:691 | 1) 25359; [ch0] vos initialized
INFO (16: 0: 3:691 | 0) 25359; [vos] selected: 121.12.98.146:4011
ERROR (16: 0: 3:691 | 0) 25359; [ch0] login strategy=2
INFO (16: 0: 3:691 | 0) 25359; [ds]: ver 1 ds ‘{“streamType”:0,“clientRole”:1}’
INFO (16: 0: 3:692 | 1) 25359; Engine Capability: Intra Request=1
INFO (16: 0: 3:692 | 0) 25359; [che] getEngineCapabilities: 0:{1:BROADCASTING,2:UNIFIED_COMMUNICATION},1:{0:L16,1:G722,2:OPUS,3:OPUS2ch,4:SILK,5:NOVA,6:AACLC,7:AACLC2ch,8:HEAAC,9:HEAAC2ch,10:JC1},2:{0:EVP,1:VP8,2:E264,3:H264},3:{0:INTRAREQUEST,2:

怀疑是屏幕共享的视频流带的角度有问题,具体还需要通过日志来分析的。

要不然你不要主动设置日志的路径,去默认路径获取日志,看下能不能拿到完整的日志文件?