skymaze / pymediasoup

mediasoup python client
MIT License
25 stars 14 forks source link

device.createSendTransport() Not Connecting #3

Closed Hopeful-ly closed 3 years ago

Hopeful-ly commented 3 years ago

Hi, I'm trying to create a send transport and run a function when it connects. but the connect function never runs and no errors appear. It seems like the transport never Connect in which case should Error but it doesn't. does this mean the connection has timedout or etc..? I've been working for so long and after a long time I found this amazing Repository but I'm having a problem with it. I'd appreciate any help! here's the code where I create the transport (I'm using examples from the example folder):

        self._sendTransport = self._device.createSendTransport(
            id=data['id'],
            iceParameters=data['iceParameters'],
            iceCandidates=data['iceCandidates'],
            dtlsParameters=data['dtlsParameters'],
            sctpParameters=None
        )

        @ self._sendTransport.on('connect')
        async def on_connect(dtlsParameters: DtlsParameters):
            print('Sending Connection Established!')

            await self._handlers['connect-transport']({
                "direction": "send",
                "dtlsParameters": {
                    'role': dtlsParameters.role,
                    'fingerprints': [{"algorithm": fingerprint.algorithm, "value": fingerprint.value} for fingerprint in 
                dtlsParameters.fingerprints]
                },
                "transportId": self._sendTransport.id
            })

        @self._sendTransport.on('produce')
        async def on_produce(kind: str, rtpParameters: RtpParameters, appData: dict):
            rtpCapabilities = {
                "codecs": [{
                    "channels": codec.channels,
                    "clockRate": codec.clockRate,
                    "kind": codec.kind,
                    "mimeType": codec.mimeType,
                    "parameters": codec.parameters,
                    "preferredPayloadType": codec.preferredPayloadType,
                    "rtcpFeedback": [{
                        "type": feedBack.type,
                        "parameter": feedBack.parameter
                    } for feedBack in codec.rtcpFeedback]

                } for codec in self._device.rtpCapabilities.codecs],
                "headerExtensions": [{
                    "direction": headerExtension.direction,
                    "kind": headerExtension.kind,
                    "preferredEncrypt": headerExtension.preferredEncrypt,
                    "preferredId": headerExtension.preferredId,
                    "uri": headerExtension.uri
                } for headerExtension in self._device.rtpCapabilities.headerExtensions],
                "fecMechanisms": self._device.rtpCapabilities.fecMechanisms
            }
            RtpParameters = {
                "codecs": [{
                    "channels": codec.channels,
                    "clockRate": codec.clockRate,
                    "mimeType": codec.mimeType,
                    "parameters": codec.parameters,
                    "payloadType": codec.payloadType,
                    "rtcpFeedback": [{
                        "type": feedBack.type,
                        "parameter": feedBack.parameter
                    } for feedBack in codec.rtcpFeedback]

                } for codec in rtpParameters.codecs],
                "encodings": [{
                    "ssrc": encoding.ssrc,
                    "rid": encoding.rid,
                    "codecPayloadType": encoding.codecPayloadType,
                    "rtx": encoding.rtx.ssrc,
                    "dtx": encoding.dtx,
                    "scalabilityMode": encoding.scalabilityMode,
                    "scaleResolutionDownBy": encoding.scaleResolutionDownBy,
                    "maxBitrate": encoding.maxBitrate,
                    "maxFramerate": encoding.maxFramerate,
                    "adaptivePtime": encoding.adaptivePtime,
                    "priority": encoding.priority,
                    "networkPriority": encoding.networkPriority

                } for encoding in rtpParameters.encodings],
                "headerExtensions": [{
                    "direction": headerExtension.direction,
                    "encrypt": headerExtension.encrypt,
                    "id": headerExtension.id,
                    "uri": headerExtension.uri,
                    "parameters": headerExtension.parameters
                } for headerExtension in rtpParameters.headerExtensions],
                "mid": rtpParameters.mid,
                "rtcp": {
                    "cname": rtpParameters.rtcp.cname,
                    "reducedSize": rtpParameters.rtcp.reducedSize,
                    "mux": rtpParameters.rtcp.mux
                }
            }
            await self._handlers['tracks']('send', {
                "appData": appData,
                "direction": "send",
                "kind": kind,
                "paused": False,
                "rtpCapabilities": rtpCapabilities,
                "rtpParameters": RtpParameters,
                "transportId": self._sendTransport.id
            })