jitsi / jitsi-meet-flutter-sdk

Jitsi Meet plugin for Flutter
Apache License 2.0
44 stars 33 forks source link

Android user's camera stops when a web user joins the meeting #86

Open kietdev123 opened 2 months ago

kietdev123 commented 2 months ago

Description

The camera of the Android user stops (while active) for other users in the meeting when a user joins from the web.

Expected Behavior

The Android user's camera should work normally when a user joins the meeting from the web.

Steps to Reproduce

Environment

Error Logs

I debugged the issue on User1 iOS and found the following logs when User 2’s camera stopped working:

[JitsiMeetSDK] [modules/RTC/TraceablePeerConnection.js] TPC[id=40,type=JVB] setting max height=2160,encodings=[{"active":false,"maxBitrate":200000,"scaleResolutionDownBy":4},{"active":false,"maxBitrate":500000,"scaleResolutionDownBy":2},{"active":false,"maxBitrate":1500000,"scaleResolutionDownBy":1}]
[JitsiMeetSDK] [JitsiConference.js] Failed to resume media transfer over the JVB connection: Error(Error){"message":"Failed to change encodings on the RTCRtpSendersTypeError: e.toJSON is not a function. (In 'e.toJSON()', 'e.toJSON' is undefined)","stack":"/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:830:973435\nu@/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:90:158\n/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:90:870\n/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:96:1668\nk@/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:96:499\nw@/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:96:889\ncallReactNativeMicrotasks@/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:96:3059\nvalue@/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:42:2875\n/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:42:966\nvalue@/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:42:2511\nvalue@/var/containers/Bundle/Application/1ABB03EC-1AD9-4663-ACF0-0F2045C9EEF0/Runner.app/Frameworks/JitsiMeetSDK.framework/main.jsbundle:42:924\nvalue@[native code]\nvalue@[native code]"}
[JitsiMeetSDK] [modules/xmpp/strophe.jingle.js] invalid session id: 228507c006c5

Code to Reproduce

final jitsiMeet = JitsiMeet();
        final configOverrides = {
          'startWithAudioMuted': controller.isEnableNoAudio.value,
          'startWithVideoMuted': controller.isEnableCamera.value,
          'subject': 'My Meet',
        };
        // if (!isCreatorOrAdmin) {
        //   configOverrides['buttonsWithNotifyClick'] = ['end-meeting'];
        // }
        final currentUser = Get.find<AppController>().lastLoggedUser!;
        final options = JitsiMeetConferenceOptions(
          serverURL: jitsiUrl,
          room: controller.meetingIdController.text.trim(),
          configOverrides: configOverrides,
          featureFlags: {
        FeatureFlags.addPeopleEnabled: true,
        FeatureFlags.addPeopleEnabled: true,
                FeatureFlags.welcomePageEnabled: false,
                FeatureFlags.preJoinPageEnabled: false,
                FeatureFlags.unsafeRoomWarningEnabled: false,
                FeatureFlags.resolution: FeatureFlagVideoResolutions.resolution720p,
                FeatureFlags.audioFocusDisabled: true,
                FeatureFlags.audioMuteButtonEnabled: true,
                FeatureFlags.audioOnlyButtonEnabled: true,
                FeatureFlags.calenderEnabled: true,
                FeatureFlags.callIntegrationEnabled: true,
                FeatureFlags.carModeEnabled: true,
                FeatureFlags.closeCaptionsEnabled: true,
                FeatureFlags.conferenceTimerEnabled: true,
                FeatureFlags.chatEnabled: true,
                FeatureFlags.filmstripEnabled: true,
                FeatureFlags.fullScreenEnabled: true,
                FeatureFlags.helpButtonEnabled: true,
                FeatureFlags.inviteEnabled: true,
                // FeatureFlags.androidScreenSharingEnabled:
                //     (Platform.isAndroid) ? true : false,
                FeatureFlags.speakerStatsEnabled: true,
                FeatureFlags.kickOutEnabled: true,
                FeatureFlags.liveStreamingEnabled: true,
                FeatureFlags.lobbyModeEnabled: false,
                FeatureFlags.meetingNameEnabled: true,
                FeatureFlags.meetingPasswordEnabled: true,
                FeatureFlags.notificationEnabled: true,
                FeatureFlags.overflowMenuEnabled: true,
                FeatureFlags.pipEnabled: true,
                FeatureFlags.pipWhileScreenSharingEnabled: true,
                FeatureFlags.preJoinPageHideDisplayName: false,
                FeatureFlags.raiseHandEnabled: true,
                FeatureFlags.reactionsEnabled: true,
                FeatureFlags.recordingEnabled: false,
                FeatureFlags.replaceParticipant: true,
                FeatureFlags.securityOptionEnabled: true,
                FeatureFlags.serverUrlChangeEnabled: true,
                FeatureFlags.settingsEnabled: true,
                FeatureFlags.tileViewEnabled: true,
                FeatureFlags.videoMuteEnabled: true,
                FeatureFlags.videoShareEnabled: true,
                FeatureFlags.toolboxEnabled: true,
                // FeatureFlags.iosRecordingEnabled: false,
                // FeatureFlags.iosScreenSharingEnabled: (Platform.isIOS) ? true : false,
                FeatureFlags.toolboxAlwaysVisible: true,
      },
          userInfo: JitsiMeetUserInfo(
                  displayName: controller.nameZoom.text,
                  email: currentUser.email ?? currentUser.phone ?? '',
                ),

        );
        jitsiMeet.join(options);

Solutions Attempted

Question

I noticed differences between the config.js files on my server and Jitsi’s default server. Could these differences be causing the issue? config js server (seft host).txt config js server jitsi.txt

saghul commented 2 months ago

Are you able to reproduce this on meet.jit.si? Can you please test the latest 10.2 SDK?