Code Monkey home page Code Monkey logo

Comments (15)

Blancduman avatar Blancduman commented on June 10, 2024 1

you calling produce method from sendTransport and passing arguments;
It's add task _produce (where your producer will be created) to async queue executer FlexQueue;
There will be time when _produce will be executed;
After task _produce executed -> it's call method producerCallback (which you defined when created sendTransport) and pass created producer as argument to your callback method.

from mediasoup-client-flutter.

Blancduman avatar Blancduman commented on June 10, 2024 1

I will rewrite Consumer and Producer later after fixing issue with Transceiver for send transport. For some reasons after adding transceiver, creating and setting local description to peerConnection; it doesn't have mid. If anyone know hot to fix that - let me know.

from mediasoup-client-flutter.

akaco avatar akaco commented on June 10, 2024

Hi, have you add all permission on AndroidManifest.xml ?

<uses-feature android:name="android.hardware.camera" android:required="true"/>
<uses-feature android:name="android.hardware.camera.autofocus"  android:required="true"/>
<uses-permission android:name="android.permission.CAMERA"   />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET"/>

Please check this
https://github.com/Blancduman/mediasoup-client-flutter/blob/main/example/android/app/src/main/AndroidManifest.xml

from mediasoup-client-flutter.

ritvij14 avatar ritvij14 commented on June 10, 2024

@akaco yes all these permissions and those 2 features are there already.
image

from mediasoup-client-flutter.

Blancduman avatar Blancduman commented on June 10, 2024

When you loading MediaDevice first time, it's create audio and video streams with empty mandatory. There fore that thing comes up. It's warning.

from mediasoup-client-flutter.

ritvij14 avatar ritvij14 commented on June 10, 2024

@Blancduman I still have some confusion, so what's happening is I see this warning when I am trying to join room, and also the application doesn't ask me for permissions either. This is what I used initially:-

Map<String, dynamic> mediaConstraints = <String, dynamic>{
      'audio': false,
      'video': {
        'mandatory': {
          'minWidth':
          '1280', // Provide your own width, height and frame rate here
          'minHeight': '720',
          'minFrameRate': '30',
        },
        'optional': [
          {'sourceId': videoInputDeviceId, },
        ],
      },
    };

Next what I found after a little bit of experimenting, that if I remove the optional key, it works and asks for permissions just fine. This is the changed constraints:

Map<String, dynamic> mediaConstraints = <String, dynamic>{
      'audio': true,
      'video': {
        // 'optional': [
        //   {
        //     'sourceId': selectedVideoInput.deviceId,
        //   },
        // ],
        'mandatory': {
          'minWidth':
              '1280', // Provide your own width, height and frame rate here
          'minHeight': '720',
          'minFrameRate': '30',
        },
      },
    };

from mediasoup-client-flutter.

Blancduman avatar Blancduman commented on June 10, 2024

Check if your sourceId is not null. Maybe part of issue in your case.

from mediasoup-client-flutter.

ritvij14 avatar ritvij14 commented on June 10, 2024

@Blancduman thanks for pointing it out, that indeed was the case. One more doubt I have is that how exactly are the producer callback and consumer callback working? Like, in my case I wanted to know how I can receive a producer (that is created through sendTransport) and then send it to other classes or emit it using EventEmitter.

from mediasoup-client-flutter.

Blancduman avatar Blancduman commented on June 10, 2024

So... This issue may be closed, @ritvij14 ?

from mediasoup-client-flutter.

ritvij14 avatar ritvij14 commented on June 10, 2024

@Blancduman I have one more doubt.
I am facing this error right now, even though I am not using any maps in the room client, have you faced this on your end before? Everything gets closed.

image

from mediasoup-client-flutter.

Blancduman avatar Blancduman commented on June 10, 2024

No. Need more context

from mediasoup-client-flutter.

ritvij14 avatar ritvij14 commented on June 10, 2024

@Blancduman so the particular error which is causing everything to close is this:-

I/flutter (20637): NoSuchMethodError: Class '_InternalLinkedHashMap<dynamic, dynamic>' has no instance method 'add'.
I/flutter (20637): Receiver: _LinkedHashMap len:0
I/flutter (20637): Tried calling: add(_LinkedHashMap len:3)
I/flutter (20637): [Peer] DEBUG: close()
I/flutter (20637): [Logger::NativeTransport] DEBUG: close()
I/flutter (20637): mediasoup-client:Transport close()
I/flutter (20637): mediasoup-client:Native close()
I/flutter (20637): mediasoup-client:Transport close()
I/flutter (20637): mediasoup-client:Native close()
D/FlutterWebRTCPlugin(20637): onConnectionChangeCLOSED
D/FlutterWebRTCPlugin(20637): onConnectionChangeCLOSED
I/flutter (20637): mediasoup-client:Transport connection state changed to closed
I/flutter (20637): mediasoup-client:Transport connection state changed to closed

and this is the error log after that:-

E/flutter (20637): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: closed
E/flutter (20637): #0      HuddleClient.join.<anonymous closure> (package:huddle01_flutter/huddle_client.dart:662:15)
E/flutter (20637): #1      HuddleClient.join.<anonymous closure> (package:huddle01_flutter/huddle_client.dart:640:28)
E/flutter (20637): #2      new WebSocket.<anonymous closure> (package:huddle01_flutter/web_socket.dart:27:52)
E/flutter (20637): #3      EventEmitter.callback (package:events2/src/event_emitter.dart:37:15)
E/flutter (20637): #4      EventEmitter.emit.<anonymous closure> (package:events2/src/event_emitter.dart:109:7)
E/flutter (20637): #5      List.forEach (dart:core-patch/growable_array.dart:403:8)
E/flutter (20637): #6      EventEmitter.emit (package:events2/src/event_emitter.dart:108:35)
E/flutter (20637): #7      Peer._handleRequest (package:protoo_client/src/peer.dart:178:12)
E/flutter (20637): #8      Peer._handleTransport.<anonymous closure> (package:protoo_client/src/peer.dart:166:9)
E/flutter (20637): #9      EventEmitter.callback (package:events2/src/event_emitter.dart:31:15)
E/flutter (20637): #10     EventEmitter.emit.<anonymous closure> (package:events2/src/event_emitter.dart:109:7)
E/flutter (20637): #11     List.forEach (dart:core-patch/growable_array.dart:403:8)
E/flutter (20637): #12     EventEmitter.emit (package:events2/src/event_emitter.dart:108:35)
E/flutter (20637): #13     EnhancedEventEmitter.safeEmit (package:protoo_client/src/EnhancedEventEmitter.dart:13:7)
E/flutter (20637): #14     Transport._runWebSocket.<anonymous closure>.<anonymous closure> (package:protoo_client/src/transports/NativeTransport.dart:80:16)
E/flutter (20637): #15     _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (20637): #16     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (20637): #17     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (20637): #18     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (20637): #19     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
E/flutter (20637): #20     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:733:19)
E/flutter (20637): #21     _StreamController._add (dart:async/stream_controller.dart:607:7)
E/flutter (20637): #22     _StreamController.add (dart:async/stream_controller.dart:554:5)
E/flutter (20637): #23     new _WebSocketImpl._fromSocket.<anonymous closure> (dart:_http/websocket_impl.dart:1145:21)
E/flutter (20637): #24     _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (20637): #25     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (20637): #26     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (20637): #27     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (20637): #28     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
E/flutter (20637): #29     _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:63:11)
E/flutter (20637): #30     _EventSinkWrapper.add (dart:async/stream_transformers.dart:13:11)
E/flutter (20637): #31     _WebSocketProtocolTransformer._messageFrameEnd (dart:_http/websocket_impl.dart:338:23)
E/flutter (20637): #32     _WebSocketProtocolTransformer.add (dart:_http/websocket_impl.dart:232:46)
E/flutter (20637): #33     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:111:24)
E/flutter (20637): #34     _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (20637): #35     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (20637): #36     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (20637): #37     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (20637): #38     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
E/flutter (20637): #39     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:733:19)
E/flutter (20637): #40     _StreamController._add (dart:async/stream_controller.dart:607:7)
E/flutter (20637): #41     _StreamController.add (dart:async/stream_controller.dart:554:5)
E/flutter (20637): #42     _Socket._onData (dart:io-patch/socket_patch.dart:2160:41)
E/flutter (20637): #43     _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (20637): #44     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (20637): #45     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (20637): #46     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (20637): #47     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
E/flutter (20637): #48     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:733:19)
E/flutter (20637): #49     _StreamController._add (dart:async/stream_controller.dart:607:7)
E/flutter (20637): #50     _StreamController.add (dart:async/stream_controller.dart:55
I/flutter (20637): mediasoup-client:Transport consume()
E/flutter (20637): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: closed
E/flutter (20637): #0      HuddleClient.join.<anonymous closure> (package:huddle01_flutter/huddle_client.dart:662:15)
E/flutter (20637): #1      HuddleClient.join.<anonymous closure> (package:huddle01_flutter/huddle_client.dart:640:28)
E/flutter (20637): #2      new WebSocket.<anonymous closure> (package:huddle01_flutter/web_socket.dart:27:52)
E/flutter (20637): #3      EventEmitter.callback (package:events2/src/event_emitter.dart:37:15)
E/flutter (20637): #4      EventEmitter.emit.<anonymous closure> (package:events2/src/event_emitter.dart:109:7)
E/flutter (20637): #5      List.forEach (dart:core-patch/growable_array.dart:403:8)
E/flutter (20637): #6      EventEmitter.emit (package:events2/src/event_emitter.dart:108:35)
E/flutter (20637): #7      Peer._handleRequest (package:protoo_client/src/peer.dart:178:12)
E/flutter (20637): #8      Peer._handleTransport.<anonymous closure> (package:protoo_client/src/peer.dart:166:9)
E/flutter (20637): #9      EventEmitter.callback (package:events2/src/event_emitter.dart:31:15)
E/flutter (20637): #10     EventEmitter.emit.<anonymous closure> (package:events2/src/event_emitter.dart:109:7)
E/flutter (20637): #11     List.forEach (dart:core-patch/growable_array.dart:403:8)
E/flutter (20637): #12     EventEmitter.emit (package:events2/src/event_emitter.dart:108:35)
E/flutter (20637): #13     EnhancedEventEmitter.safeEmit (package:protoo_client/src/EnhancedEventEmitter.dart:13:7)
E/flutter (20637): #14     Transport._runWebSocket.<anonymous closure>.<anonymous closure> (package:protoo_client/src/transports/NativeTransport.dart:80:16)
E/flutter (20637): #15     _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (20637): #16     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (20637): #17     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (20637): #18     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (20637): #19     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
E/flutter (20637): #20     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:733:19)
E/flutter (20637): #21     _StreamController._add (dart:async/stream_controller.dart:607:7)
E/flutter (20637): #22     _StreamController.add (dart:async/stream_controller.dart:554:5)
E/flutter (20637): #23     new _WebSocketImpl._fromSocket.<anonymous closure> (dart:_http/websocket_impl.dart:1145:21)
E/flutter (20637): #24     _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (20637): #25     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (20637): #26     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (20637): #27     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (20637): #28     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
E/flutter (20637): #29     _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:63:11)
E/flutter (20637): #30     _EventSinkWrapper.add (dart:async/stream_transformers.dart:13:11)
E/flutter (20637): #31     _WebSocketProtocolTransformer._messageFrameEnd (dart:_http/websocket_impl.dart:338:23)
E/flutter (20637): #32     _WebSocketProtocolTransformer.add (dart:_http/websocket_impl.dart:232:46)
E/flutter (20637): #33     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:111:24)
E/flutter (20637): #34     _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (20637): #35     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (20637): #36     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (20637): #37     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (20637): #38     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
E/flutter (20637): #39     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:733:19)
E/flutter (20637): #40     _StreamController._add (dart:async/stream_controller.dart:607:7)
E/flutter (20637): #41     _StreamController.add (dart:async/stream_controller.dart:554:5)
E/flutter (20637): #42     _Socket._onData (dart:io-patch/socket_patch.dart:2160:41)
E/flutter (20637): #43     _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (20637): #44     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (20637): #45     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (20637): #46     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (20637): #47     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
E/flutter (20637): #48     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:733:19)
E/flutter (20637): #49     _StreamController._add (dart:async/stream_controller.dart:607:7)
E/flutter (20637): #50     _StreamController.add (dart:async/stream_controller.dart:55

And this is the code block causing that error:

_webSocket.onRequest = (request, reject, accept) async {
      switch (request['method']) {
        case 'newConsumer':
          {
            if (!consume) {
              reject(403, 'I do not want to consume');
              break;
            }
            try {
              _recvTransport!.consume(
                id: request['data']['id'],
                producerId: request['data']['producerId'],
                kind: RTCRtpMediaTypeExtension.fromString(
                    request['data']['kind']),
                rtpParameters:
                    RtpParameters.fromMap(request['data']['rtpParameters']),
                appData: Map<String, dynamic>.from(request['data']['appData']),
                peerId: request['data']['peerId'],
                accept: accept,
              );
            } catch (error) {
              log('newConsumer request failed: $error');
              throw (error);
            }
            break;
          }

        // case 'newDataConsumer':
        //  break;
        default:
          break;
      }
    };

Please tell me if some more info is needed.

from mediasoup-client-flutter.

Blancduman avatar Blancduman commented on June 10, 2024

from mediasoup-client-flutter.

ritvij14 avatar ritvij14 commented on June 10, 2024

Alright 👍🏻

from mediasoup-client-flutter.

ritvij14 avatar ritvij14 commented on June 10, 2024

@Blancduman while running the application in the example folder, I got this error when I tried to Unmute my mic:

I/flutter ( 6821): [Peer] DEBUG: request() [method:pauseProducer, id: 983719]
I/flutter ( 6821): mediasoup-client:Producer pause()
E/flutter ( 6821): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Unhandled error LateInitializationError: Field 'error' has not been initialized. occurred in Instance of 'ProducersBloc'.
E/flutter ( 6821): #0      Logger.error (package:mediasoup_client_flutter/src/common/logger.dart)
package:mediasoup_client_flutter/…/common/logger.dart:1
E/flutter ( 6821): #1      Producer.pause
package:mediasoup_client_flutter/src/producer.dart:252
E/flutter ( 6821): #2      ProducersBloc._mapProducerPausedToState
package:example/…/producers/producers_bloc.dart:91
E/flutter ( 6821): <asynchronous suspension>
E/flutter ( 6821):

Should I create a new bug issue for this?

from mediasoup-client-flutter.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.