与 Flutter WebRtc 共享屏幕

问题描述 投票:0回答:1

我在 flutter 中使用 Webrtc 来共享我的屏幕。 我有这个代码

Signaling {
    RTCVideoRenderer localRenderer = RTCVideoRenderer();
    RTCVideoRenderer remoteRenderer = RTCVideoRenderer();

    MediaStream? localStream;
    MediaStream? remoteStream;
    Future<void> makeScreenSharing() async {
    final mediaConstraints = <String, dynamic>{'audio': true, 'video': true};

    try {
      var stream =
          await navigator.mediaDevices.getDisplayMedia(mediaConstraints);

      localStream = stream;
      localRenderer.srcObject = localStream;
    } catch (e) {
      print(e.toString());
    }
}

此代码将导致在我自己的页面上共享我的屏幕,但其他连接仍在接收我的相机。

flutter dart webrtc flutter-webrtc
1个回答
0
投票

我解决了这个问题 你必须更换轨道

Future<void> replaceMediaStream(MediaStream newStream) {
return peerConnection?.senders.then((senders) {
  senders.forEach((sender) async {
    if (sender.track?.kind == 'video') {
      if (newStream.getVideoTracks().length > 0) {
        await sender.replaceTrack(newStream.getVideoTracks()[0]);
      }
    } else if (sender.track?.kind == 'audio') {
      if (newStream.getAudioTracks().length > 0) {
        await sender.replaceTrack(newStream.getAudioTracks()[0]);
      }
    }
  });
  return Future.value();
}) ??
    Future.error(
        Exception('An error occurred during switching the stream'));

}

设置本地流后调用此函数

© www.soinside.com 2019 - 2024. All rights reserved.