AgoraIO-Extensions / Agora-Flutter-SDK

Flutter plugin of Agora RTC SDK for Android/iOS/macOS/Windows
https://pub.dev/packages/agora_rtc_engine
MIT License
720 stars 372 forks source link

agora flutter web screen sharing a power point window getting frozen when full screen #1881

Open danilo1998271 opened 4 days ago

danilo1998271 commented 4 days ago

Version of the agora_rtc_engine

5.3.1

Platforms affected

Steps to reproduce

we have a screen sharing functionality in flutter web but when sharing a powerpoint window and hit full screen, the video is freezing

Expected results

screensharing powerpoint is not freezing when shared using fullscreen

Actual results

screensharing powerpoint freezing when fullscreen

Code sample

_startScreenShare() async { await getRtcToken2("screenshare");

helper = await _engine.getScreenShareHelper(
    appGroup: kIsWeb || Platform.isWindows ? null : "io.agora");
helper.setEventHandler(
  RtcEngineEventHandler(
    userJoined: (uid, elapsed) async {
      var exist = rtcHelperMembers.where((e) => e.uid == uid);
      if (exist.isEmpty) {
        if (kDebugMode) {
          print("RTC Helper: Remote user joined $uid");
        }
      }
    },
    userInfoUpdated: (uid, userInfo) {
      if (kDebugMode) {
        print("RTC Helper: UserInfo Updated for ${userInfo.userAccount}");
      }
    },
    userOffline: (uid, reason) {
      rtcHelperMembers.removeWhere((e) => e.uid == uid);
      if (kDebugMode) {
        print("RTC Helper: Remote user Left $uid");
      }
    },
    joinChannelSuccess: (String channel, String uid, int elapsed) {
      rtcMembers.refresh();
      rtcHelperMembers.refresh();
    },
    leaveChannel: (stats) {
      rtcHelperMembers.clear();
      if (mounted) {
        isScreenShared.value = false;
      }
    },
    localVideoStateChanged: (LocalVideoStreamState localVideoState,
        LocalVideoStreamError error) {
      if (kDebugMode) {
        print(
            'RTC Helper: ScreenSharing localVideoStateChanged $localVideoState $error');
      }
      if (localVideoState == LocalVideoStreamState.Failed) {
        _stopScreenShare();
      }
    },
    warning: (warningCode) {
      if (kDebugMode) {
        print('RTC Helper: warning $warningCode');
      }
    },
    error: (errorCode) {
      if (kDebugMode) {
        print('RTC Helper: error $errorCode');
      }
    },
  ),
);
await helper.enableVideo();
await helper.setChannelProfile(ChannelProfile.LiveBroadcasting);
await helper.muteLocalAudioStream(!isScreenShareMuted.value);
await helper.setClientRole(ClientRole.Broadcaster);
var windowId = 0;
if (!kIsWeb && (Platform.isWindows || Platform.isMacOS)) {
  final windows = _engine.enumerateWindows();
  if (windows.isNotEmpty) {
    windowId = windows[0].id;
  }
}
await helper.startScreenCaptureByWindowId(windowId);

await helper.registerLocalUserAccount(config.appId, "screenshare");
await helper.joinChannelWithUserAccount(
    rtcToken, rtcChannelName, "screenshare");

isScreenShared.value = true;

}

Screenshots or Video

Screenshots / Video demonstration [Upload media here]

Logs

Logs ```console [Paste your logs here] ```

Flutter Doctor output

Doctor output ```console [Paste your output here] ```
littleGnAl commented 3 days ago

The version 5.x is no longer maintained, please upgrade to the latest version of 6.x.