livekit / client-sdk-swift

LiveKit Swift Client SDK. Easily build live audio or video experiences into your mobile app, game or website.
https://livekit.io
Apache License 2.0
174 stars 84 forks source link

shareScreen and video show many screens #329

Closed monkeyttttt closed 5 months ago

monkeyttttt commented 5 months ago

Describe the bug shareScreen and video show many screens

SDK Version 1.0.13

iOS/macOS Version iOS 17.1.1

Steps to Reproduce

Expected behavior shareScreen and video show normal

Screenshots WechatIMG46

Logs ===WDRoomViewControll erconnection state did update connected numberOfItemsInSection... 2024-01-31T17:58:22+0800 info LiveKitSDK : Room.connect(::connectOptions:roomOptions:) connected to Room(sid: RM_mBJL3TAJLJ6B, name: 2B5407082058, serverVersion: 1.5.0, serverRegion: nil) nil <WD.WDParticipantCell: 0x15a8094f0; baseClass = UICollectionViewCell; frame = (0 0; 191 339.556); layer = <CALayer: 0x28026dcc0>> init, instances: 1 ====setFirstVideoTrack videoTracks count Optional(0) ======firstAudioPublication nil nil 2024-01-31T17:58:22+0800 warning LiveKitSDK : VideoView.performLayout() track is nil, cannot layout without track 2024-01-31T17:58:22+0800 info LiveKitSDK : LocalParticipant.publish(track:publishOptions:) [publish] LocalVideoTrack(sid: nil, name: camera, source: Source(rawValue: 1)) options: nil... 2024-01-31T17:58:22+0800 info LiveKitSDK : LocalParticipant.publish(track:publishOptions:) [publish] LocalAudioTrack(sid: nil, name: microphone, source: Source(rawValue: 2)) options: nil... connected to server version: Optional("1.5.0") 2024-01-31T17:58:22+0800 warning LiveKitSDK : VideoView.performLayout() track is nil, cannot layout without track 2024-01-31T17:58:22+0800 info LiveKitSDK : CameraCapturer.startCapture() starting camera capturer device: <AVCaptureFigVideoDevice: 0x15b08a200 [Front Camera][com.apple.avfoundation.avcapturedevice.built-in_video:1]>, format: (format: 'vide'/'420v' 1280x 720, { 1- 30 fps}, photo dims:{1280x720,4032x2268}, fov:73.292, supports vis (max strength:Low), max zoom:24.00 (upscales @2.86), ISO:23.0-2208.0, SS:0.000021-1.000000, supports HDR, supports high photo quality, supports Portrait Effect, dimensions: <LiveKitClient.Dimensions: 0x28003d4a0>), fps: 30(0...30) 2024-01-31T17:58:22+0800 info LiveKitSDK : LocalParticipant.publish(track:publishOptions:) [publish] success LocalTrackPublication(sid: TR_AMFCYJDbZWEkJ9, kind: Kind(rawValue: 0), source: Source(rawValue: 2)) =======ParticipantCell LocalParticipant didPublish LocalTrackPublication(sid: TR_AMFCYJDbZWEkJ9, kind: Kind(rawValue: 0), source: Source(rawValue: 2)) ====WDRoomViewController localParticipant didPublish... Room(sid: RM_mBJL3TAJLJ6B, name: 2B5407082058, serverVersion: 1.5.0, serverRegion: nil) Optional("") LocalParticipant(sid: PA_ba4XWBXAoz58) =====sid is PA_JChYgvLZUhnc=====苹果

===========setParticipants count is 1 numberOfItemsInSection... prepareForReuse, cellId: 1 ====setFirstVideoTrack videoTracks count Optional(0) ======firstAudioPublication Optional(LocalTrackPublication(sid: TR_AMFCYJDbZWEkJ9, kind: Kind(rawValue: 0), source: Source(rawValue: 2))) Optional(false) <WD.WDParticipantCell: 0x159d19e10; baseClass = UICollectionViewCell; frame = (193 0; 191 339.556); layer = <CALayer: 0x280257740>> init, instances: 2 ====setFirstVideoTrack videoTracks count Optional(1) ====setFirstVideoTrack first kind:Kind(rawValue: 1)、source:Source(rawValue: 1)、mute:false ====setFirstVideoTrack last kind:Kind(rawValue: 1)、source:Source(rawValue: 1)、mute:false ======firstAudioPublication Optional(RemoteTrackPublication(sid: TR_AM8nYTdohzDzzV, kind: Kind(rawValue: 0), source: Source(rawValue: 2))) Optional(false) 2024-01-31T17:58:22+0800 warning LiveKitSDK : VideoView.performLayout() dimensions are nil, cannot layout without dimensions, track: RemoteVideoTrack(sid: TR_VCbiu25hgx45od, name: camera, source: Source(rawValue: 1)) 2024-01-31T17:58:22+0800 warning LiveKitSDK : VideoView.performLayout() track is nil, cannot layout without track 2024-01-31T17:58:22+0800 warning LiveKitSDK : VideoView.performLayout() dimensions are nil, cannot layout without dimensions, track: RemoteVideoTrack(sid: TR_VCbiu25hgx45od, name: camera, source: Source(rawValue: 1)) 2024-01-31T17:58:23+0800 info LiveKitSDK : LocalParticipant.publish(track:publishOptions:) [publish] success LocalTrackPublication(sid: TR_VCLQioQmQ8jLuZ, kind: Kind(rawValue: 1), source: Source(rawValue: 1)) ====WDRoomViewController localParticipant didPublish... Room(sid: RM_mBJL3TAJLJ6B, name: 2B5407082058, serverVersion: 1.5.0, serverRegion: nil) Optional("") LocalParticipant(sid: PA_ba4XWBXAoz58) =====sid is PA_JChYgvLZUhnc=====苹果

===========setParticipants count is 1 numberOfItemsInSection... =======ParticipantCell LocalParticipant didPublish LocalTrackPublication(sid: TR_VCLQioQmQ8jLuZ, kind: Kind(rawValue: 1), source: Source(rawValue: 1)) prepareForReuse, cellId: 1 ====setFirstVideoTrack videoTracks count Optional(1) ====setFirstVideoTrack first kind:Kind(rawValue: 1)、source:Source(rawValue: 1)、mute:false ====setFirstVideoTrack last kind:Kind(rawValue: 1)、source:Source(rawValue: 1)、mute:false ======firstAudioPublication Optional(LocalTrackPublication(sid: TR_AMFCYJDbZWEkJ9, kind: Kind(rawValue: 0), source: Source(rawValue: 2))) Optional(false) prepareForReuse, cellId: 2 ====setFirstVideoTrack videoTracks count Optional(1) ====setFirstVideoTrack first kind:Kind(rawValue: 1)、source:Source(rawValue: 1)、mute:false ====setFirstVideoTrack last kind:Kind(rawValue: 1)、source:Source(rawValue: 1)、mute:false ======firstAudioPublication Optional(RemoteTrackPublication(sid: TR_AM8nYTdohzDzzV, kind: Kind(rawValue: 0), source: Source(rawValue: 2))) Optional(false) 2024-01-31T17:58:23+0800 warning LiveKitSDK : VideoView.performLayout() dimensions are nil, cannot layout without dimensions, track: LocalVideoTrack(sid: TR_VCLQioQmQ8jLuZ, name: camera, source: Source(rawValue: 1)) 2024-01-31T17:58:23+0800 warning LiveKitSDK : VideoView.performLayout() dimensions are nil, cannot layout without dimensions, track: LocalVideoTrack(sid: TR_VCLQioQmQ8jLuZ, name: camera, source: Source(rawValue: 1)) 2024-01-31T17:58:23+0800 info LiveKitSDK : LocalParticipant.onSubscribedQualitiesUpdate(trackSid:subscribedQualities:) setting layer medium to false 2024-01-31T17:58:23+0800 info LiveKitSDK : LocalParticipant.onSubscribedQualitiesUpdate(trackSid:subscribedQualities:) setting layer high to false 2024-01-31T17:58:24+0800 info LiveKitSDK : LocalParticipant.onSubscribedQualitiesUpdate(trackSid:subscribedQualities:) setting layer medium to true 2024-01-31T17:58:24+0800 info LiveKitSDK : LocalParticipant.publish(track:publishOptions:) [publish] LocalVideoTrack(sid: nil, name: screen_share, source: Source(rawValue: 3)) options: nil... 2024-01-31T17:58:24+0800 info LiveKitSDK : LocalParticipant.publish(track:publishOptions:) [publish] success LocalTrackPublication(sid: TR_VSZitq4ajKyGwe, kind: Kind(rawValue: 1), source: Source(rawValue: 3)) =======ParticipantCell LocalParticipant didPublish LocalTrackPublication(sid: TR_VSZitq4ajKyGwe, kind: Kind(rawValue: 1), source: Source(rawValue: 3)) ====WDRoomViewController localParticipant didPublish... Room(sid: RM_mBJL3TAJLJ6B, name: 2B5407082058, serverVersion: 1.5.0, serverRegion: nil) Optional("") LocalParticipant(sid: PA_ba4XWBXAoz58) =====sid is PA_JChYgvLZUhnc=====苹果

===========setParticipants count is 1 numberOfItemsInSection... prepareForReuse, cellId: 1 ====setFirstVideoTrack videoTracks count Optional(2) ====setFirstVideoTrack first kind:Kind(rawValue: 1)、source:Source(rawValue: 3)、mute:false ====setFirstVideoTrack last kind:Kind(rawValue: 1)、source:Source(rawValue: 1)、mute:false =========name:po,shareEnable:true ======firstAudioPublication Optional(LocalTrackPublication(sid: TR_AMFCYJDbZWEkJ9, kind: Kind(rawValue: 0), source: Source(rawValue: 2))) Optional(false) prepareForReuse, cellId: 2 ====setFirstVideoTrack videoTracks count Optional(1) ====setFirstVideoTrack first kind:Kind(rawValue: 1)、source:Source(rawValue: 1)、mute:false ====setFirstVideoTrack last kind:Kind(rawValue: 1)、source:Source(rawValue: 1)、mute:false ======firstAudioPublication Optional(RemoteTrackPublication(sid: TR_AM8nYTdohzDzzV, kind: Kind(rawValue: 0), source: Source(rawValue: 2))) Optional(false) 2024-01-31T17:58:24+0800 warning LiveKitSDK : VideoView.performLayout() dimensions are nil, cannot layout without dimensions, track: LocalVideoTrack(sid: TR_VSZitq4ajKyGwe, name: screen_share, source: Source(rawValue: 3)) 2024-01-31T17:58:24+0800 warning LiveKitSDK : VideoView.performLayout() dimensions are nil, cannot layout without dimensions, track: LocalVideoTrack(sid: TR_VSZitq4ajKyGwe, name: screen_share, source: Source(rawValue: 3)) 2024-01-31T17:58:24+0800 warning LiveKitSDK : VideoView.performLayout() dimensions are nil, cannot layout without dimensions, track: LocalVideoTrack(sid: TR_VSZitq4ajKyGwe, name: screen_share, source: Source(rawValue: 3)) 2024-01-31T17:58:24+0800 warning LiveKitSDK : VideoView.performLayout() dimensions are nil, cannot layout without dimensions, track: LocalVideoTrack(sid: TR_VSZitq4ajKyGwe, name: screen_share, source: Source(rawValue: 3)) =======ParticipantCell didUpdate connectionQuality ConnectionQuality(rawValue: 3) =======ParticipantCell didUpdate speaking po Optional(false)true xxxxxxxxx received notification: iOS_BroadcastStarted 2024-01-31T17:58:29+0800 warning LiveKitSDK : VideoView.performLayout() dimensions are nil, cannot layout without dimensions, track: LocalVideoTrack(sid: TR_VSZitq4ajKyGwe, name: screen_share, source: Source(rawValue: 3)) 2024-01-31T17:58:30+0800 info LiveKitSDK : LocalParticipant.onSubscribedQualitiesUpdate(trackSid:subscribedQualities:) setting layer medium to false =======ParticipantCell didUpdate speaking po Optional(false)false

davidzhao commented 5 months ago

This happens when you are sharing the screen which includes screenshare. This is controlled by your application. See: https://support.google.com/meet/thread/131558562/multiple-screens-are-appearing-as-infinite-loops-while-presenting-the-screen?hl=en