mediasoup_v3_example icon indicating copy to clipboard operation
mediasoup_v3_example copied to clipboard

White box - No media recived

Open codemeasandwich opened this issue 4 years ago • 3 comments

I'm having a problem with the examples.

I have created a remote server and deploy the code. From the terminal everything looks fine and I can see the clients connecting. I can load up the "html" pages and start the media, I'm able to hit publish but whenever people subscribed they only received an empty box.

My setup: A Ubuntu laptop, A Macbook Air and an Android phone.

Thanks for any help :)

Here is the output from only trying to run the broadcast example

$ node mediasoup_v3_broadcast.js 
socket.io server start. port=443
Web server start. https://178.128.128.151:443/
client connected. socket id=4LBBs9SvfrcviWiwAAAA  , total clients=1
-- mediasoup worker start. --
client connected. socket id=9qXXNU8yctWouTFGAAAB  , total clients=2
getRouterRtpCapabilities:  {
  codecs: [
    {
      kind: 'audio',
      mimeType: 'audio/opus',
      clockRate: 48000,
      channels: 2,
      preferredPayloadType: 100,
      parameters: {},
      rtcpFeedback: []
    },
    {
      kind: 'video',
      mimeType: 'video/VP8',
      clockRate: 90000,
      rtcpFeedback: [Array],
      preferredPayloadType: 101,
      parameters: [Object]
    },
    {
      kind: 'video',
      mimeType: 'video/rtx',
      preferredPayloadType: 102,
      clockRate: 90000,
      rtcpFeedback: [],
      parameters: [Object]
    }
  ],
  headerExtensions: [
    {
      kind: 'audio',
      uri: 'urn:ietf:params:rtp-hdrext:sdes:mid',
      preferredId: 1,
      preferredEncrypt: false,
      direction: 'recvonly'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:sdes:mid',
      preferredId: 1,
      preferredEncrypt: false,
      direction: 'recvonly'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id',
      preferredId: 2,
      preferredEncrypt: false,
      direction: 'recvonly'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id',
      preferredId: 3,
      preferredEncrypt: false,
      direction: 'recvonly'
    },
    {
      kind: 'audio',
      uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time',
      preferredId: 4,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'video',
      uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time',
      preferredId: 4,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'audio',
      uri: 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01',
      preferredId: 5,
      preferredEncrypt: false,
      direction: 'inactive'
    },
    {
      kind: 'video',
      uri: 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01',
      preferredId: 5,
      preferredEncrypt: false,
      direction: 'inactive'
    },
    {
      kind: 'video',
      uri: 'http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07',
      preferredId: 6,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:framemarking',
      preferredId: 7,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'audio',
      uri: 'urn:ietf:params:rtp-hdrext:ssrc-audio-level',
      preferredId: 10,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'video',
      uri: 'urn:3gpp:video-orientation',
      preferredId: 11,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:toffset',
      preferredId: 12,
      preferredEncrypt: false,
      direction: 'sendrecv'
    }
  ],
  fecMechanisms: []
}
-- createProducerTransport ---
-- create transport id=ceefb300-f62f-4c81-8420-a3ed26f4368f
-- produce --- kind= video
--broadcast newProducer -- kind= video
-- produce --- kind= audio
--broadcast newProducer -- kind= audio

client connected. socket id=IQUc9QQR6WNRghJFAAAC  , total clients=3
getRouterRtpCapabilities:  {
  codecs: [
    {
      kind: 'audio',
      mimeType: 'audio/opus',
      clockRate: 48000,
      channels: 2,
      preferredPayloadType: 100,
      parameters: {},
      rtcpFeedback: []
    },
    {
      kind: 'video',
      mimeType: 'video/VP8',
      clockRate: 90000,
      rtcpFeedback: [Array],
      preferredPayloadType: 101,
      parameters: [Object]
    },
    {
      kind: 'video',
      mimeType: 'video/rtx',
      preferredPayloadType: 102,
      clockRate: 90000,
      rtcpFeedback: [],
      parameters: [Object]
    }
  ],
  headerExtensions: [
    {
      kind: 'audio',
      uri: 'urn:ietf:params:rtp-hdrext:sdes:mid',
      preferredId: 1,
      preferredEncrypt: false,
      direction: 'recvonly'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:sdes:mid',
      preferredId: 1,
      preferredEncrypt: false,
      direction: 'recvonly'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id',
      preferredId: 2,
      preferredEncrypt: false,
      direction: 'recvonly'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id',
      preferredId: 3,
      preferredEncrypt: false,
      direction: 'recvonly'
    },
    {
      kind: 'audio',
      uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time',
      preferredId: 4,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'video',
      uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time',
      preferredId: 4,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'audio',
      uri: 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01',
      preferredId: 5,
      preferredEncrypt: false,
      direction: 'inactive'
    },
    {
      kind: 'video',
      uri: 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01',
      preferredId: 5,
      preferredEncrypt: false,
      direction: 'inactive'
    },
    {
      kind: 'video',
      uri: 'http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07',
      preferredId: 6,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:framemarking',
      preferredId: 7,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'audio',
      uri: 'urn:ietf:params:rtp-hdrext:ssrc-audio-level',
      preferredId: 10,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'video',
      uri: 'urn:3gpp:video-orientation',
      preferredId: 11,
      preferredEncrypt: false,
      direction: 'sendrecv'
    },
    {
      kind: 'video',
      uri: 'urn:ietf:params:rtp-hdrext:toffset',
      preferredId: 12,
      preferredEncrypt: false,
      direction: 'sendrecv'
    }
  ],
  fecMechanisms: []
}
-- createConsumerTransport ---
-- create transport id=0b864841-16bf-41dd-b2e5-d18c1798a167
consumerTransports count=1
-- consume --kind=video
videoConsumers count=1
-- consumer ready ---
-- connectConsumerTransport ---
-- resume -- kind=video
-- consume --kind=audio
audioConsumers count=1
-- consumer ready ---

codemeasandwich avatar Jun 23 '20 09:06 codemeasandwich

Here is the client console

=== ready ===
subscribe.html:65 socket.io connected()
subscribe.html:75 socket.io message: {type: "welcome", id: "G2flbGkugzd7U6CJAAAH"}
subscribe.html:82 connected to server. clientId=G2flbGkugzd7U6CJAAAH
subscribe.html:265 getRouterRtpCapabilities: {codecs: Array(3), headerExtensions: Array(13), fecMechanisms: Array(0)}
subscribe.html:272 --- createConsumerTransport --
subscribe.html:274 transport params: {id: "f059ade3-782b-4025-864b-9ffce694634b", iceParameters: {…}, iceCandidates: Array(2), dtlsParameters: {…}}
subscribe.html:276 createConsumerTransport: Transport {_events: {…}, _eventsCount: 0, _maxListeners: Infinity, _logger: Logger, _id: "f059ade3-782b-4025-864b-9ffce694634b", …}
subscribe.html:383 --start of consume --kind=video
subscribe.html:290 --consumer trasnport connect
subscribe.html:301 subscribing...
subscribe.html:411 --end of consume
subscribe.html:327 -- track exist, consumer ready. kind=video
subscribe.html:330 -- resume kind=video
subscribe.html:383 --start of consume --kind=audio
subscribe.html:333 resume OK
subscribe.html:411 --end of consume
subscribe.html:327 -- track exist, consumer ready. kind=audio
subscribe.html:342 -- do not resume kind=audio
subscribe.html:309 failed

codemeasandwich avatar Jun 23 '20 10:06 codemeasandwich

I have also changed the top of the server file to

const fs = require('fs');
let serverOptions = {
  hostName: "178.128.128.151",
  listenPort: 443,
  useHttps: true,
  httpsKeyFile:"../MyKeyFile",
  httpsCertFile:"../MyCertFile",
};
let sslOptions = {};
if (serverOptions.useHttps) {
  sslOptions.key = fs.readFileSync(serverOptions.httpsKeyFile).toString();
  sslOptions.cert = fs.readFileSync(serverOptions.httpsCertFile).toString();
}

To enable HTTPS

codemeasandwich avatar Jun 23 '20 10:06 codemeasandwich

Make sure to set listenIps from 127.0.0.1 to your server's IP. Restart and it should work. You were dealing the traffic being blocked by your firewall router.

Demodian avatar Sep 17 '20 18:09 Demodian