[jitsi-users] Standalone Videobridge, one way video, rtcp issue?


#1

Hi,

I'm trying to setup video streams between two Chrome based webrtc
clients using the Jitsi videobridge (JVB) and a custom signaling
server. For each client, the signaling server allocates one video
channel on JVB and creates an SDP offer based on the colibri reply
from JVB. The client SDP answer is converted to colibri by the
signaling server and patched to the JVB video channel.

When the second client joins, it first gets an offer with only the JVB
SSRC, and then a renegotiation offer with both client 1 SSRC and JVB
SSRC, client 1 is renegotiated with client 2 SSRC as well.

The problem is this: Client 1 starts receiving video from client 2
immediately, but client 2 only receives video from client 1 after up
to a minute (if at all).

I've searched through the mailing lists, and there seems to be a few
other that have had similar problems. Some have been related to
recvonly channels, which is not the case here. Both channels are
sendrecv. The other suggestion was to renegotiate client 2 as
described above which did not solve the problem.

I'm guessing it's RTCP related, that a PLI, FIR or Nack should have
been sent from client 2 and acted on by client 1. Not sure if JVB is
discarding the RTCP packet or if Chrome fails to send one.

Below is the SDP and colibri flow. Any help is appreciated.

Thanks
Marcus

Client 1:

···

-------------------------------
Allocate channel client 1
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "name": "video",
            "channels": [
                {
                    "expire": 180,
                    "initiator": true,
                    "endpoint": "0f4af16f-95b5-4def-8963-eaba95134b07",
                    "channel-bundle-id": "0f4af16f-95b5-4def-8963-eaba95134b07",
                    "direction": "sendrecv",
                    "receive-simulcast-layer": -1,
                    "last-n": -1
                }
            ]
        }
    ]
}

-------------------------------
Allocate channel client 1 response
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "name": "video",
            "channels": [
                {
                    "id": "6b9cc0988d8a5f0c",
                    "receive-simulcast-layer": null,
                    "expire": 180,
                    "initiator": true,
                    "direction": "sendrecv",
                    "rtp-level-relay-type": "translator",
                    "channel-bundle-id": "0f4af16f-95b5-4def-8963-eaba95134b07",
                    "last-n": -1,
                    "sources": [
                        1508223701
                    ],
                    "endpoint": "0f4af16f-95b5-4def-8963-eaba95134b07"
                }
            ]
        }
    ],
    "channel-bundles": [
        {
            "id": "0f4af16f-95b5-4def-8963-eaba95134b07",
            "transport": {
                "pwd": "5ujl7arcqvcq8l2jtqe091k6bi",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "52thi1btp59ssd",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                ...
                ]
            }
        }
    ]
}

-------------------------------
Offer to Client 1
-------------------------------
v=0
o=- 1923518516 2 IN IP4 0.0.0.0
s=-
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS mixedmslabel
m=video 1 RTP/SAVPF 100 107
c=IN IP4 0.0.0.0
a=rtpmap:100 VP8/90000
a=fmtp:100 x-google-start-bitrate=800
a=rtcp:1 IN IP4 0.0.0.0
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=setup:actpass
a=mid:video
a=sendrecv
a=ice-ufrag:52thi1btp59ssd
a=ice-pwd:5ujl7arcqvcq8l2jtqe091k6bi
a=fingerprint:sha-1 4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD
a=candidate:1 1 ...
a=candidate:1 2 ...
a=ssrc:1508223701 cname:mixed
a=ssrc:1508223701 label:mixedlabelvideo0
a=ssrc:1508223701 msid:mixedmslabel mixedlabelvideo0
a=ssrc:1508223701 mslabel:mixedmslabel
a=rtcp-mux

-------------------------------
Answer from Client 1
-------------------------------
v=0
o=- 3110730218561131439 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS kVJenYHpnqcEbeWZ4K5ZjyXWsoZuDlJ1g3ix
m=video 9 RTP/SAVPF 100
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:IhaH
a=ice-pwd:zsrkRLVz8PS3/5a5PirgEmY4
a=ice-options:trickle
a=fingerprint:sha-256
A2:7E:5E:EB:43:62:EE:7C:A9:31:24:A6:2B:0E:DD:C0:40:F7:06:9C:65:8F:CC:2D:44:2C:EC:97:F7:52:8F:20
a=setup:active
a=mid:video
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=fmtp:100 x-google-start-bitrate=800
a=candidate:1 1 ...
a=candidate:1 2 ...
a=ssrc:797742646 cname:wtNu2JR794OlYov0
a=ssrc:797742646 msid:kVJenYHpnqcEbeWZ4K5ZjyXWsoZuDlJ1g3ix
5715e9f9-b063-4d14-b747-f44bb69ae271
a=ssrc:797742646 mslabel:kVJenYHpnqcEbeWZ4K5ZjyXWsoZuDlJ1g3ix
a=ssrc:797742646 label:5715e9f9-b063-4d14-b747-f44bb69ae271

-------------------------------
Answer from Client 1 converted to colibri for patching
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "channels": [
                {
                    "endpoint": "0f4af16f-95b5-4def-8963-eaba95134b07",
                    "initiator": true,
                    "id": "6b9cc0988d8a5f0c",
                    "rtp-level-relay-type": "translator",
                    "expire": 180,
                    "payload-types": [
                        {
                            "id": 100,
                            "parameters": {
                                "rtcp-fb": [
                                    "ccm fir",
                                    "nack",
                                    "nack pli",
                                    "goog-remb"
                                ],
                                "fmtp": [
                                    "x-google-start-bitrate=800"
                                ]
                            },
                            "name": "VP8",
                            "clockrate": "90000"
                        }
                    ],
                    "channel-bundle-id": "0f4af16f-95b5-4def-8963-eaba95134b07",
                    "rtp-hdrexts": [
                        {
                            "id": 3,
                            "uri":
"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"
                        }
                    ],
                    "direction": "sendrecv",
                    "sources": [
                        "797742646"
                    ]
                }
            ],
            "name": "video"
        }
    ],
    "channel-bundles": [
        {
            "id": "0f4af16f-95b5-4def-8963-eaba95134b07",
            "transport": {
                "candidates": [
                    ...
                ],
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "fingerprints": [
                    {
                        "fingerprint":
"A2:7E:5E:EB:43:62:EE:7C:A9:31:24:A6:2B:0E:DD:C0:40:F7:06:9C:65:8F:CC:2D:44:2C:EC:97:F7:52:8F:20",
                        "setup": "active",
                        "hash": "sha-256"
                    }
                ],
                "ufrag": "IhaH",
                "pwd": "zsrkRLVz8PS3/5a5PirgEmY4",
                "rtcp-mux": true,
                "network": 3,
                "tcptype": null
            }
        }
    ]
}

-------------------------------
Response from JVB after client 1 answer patch
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "name": "video",
            "channels": [
                {
                    "id": "6b9cc0988d8a5f0c",
                    "receive-simulcast-layer": null,
                    "expire": 180,
                    "ssrcs": [
                        797742646
                    ],
                    "initiator": true,
                    "direction": "sendrecv",
                    "rtp-level-relay-type": "translator",
                    "channel-bundle-id": "0f4af16f-95b5-4def-8963-eaba95134b07",
                    "last-n": -1,
                    "sources": [
                        1508223701
                    ],
                    "endpoint": "0f4af16f-95b5-4def-8963-eaba95134b07"
                }
            ]
        }
    ],
    "channel-bundles": [
        {
            "id": "0f4af16f-95b5-4def-8963-eaba95134b07",
            "transport": {
                "pwd": "5ujl7arcqvcq8l2jtqe091k6bi",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "52thi1btp59ssd",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                    ...
                ]
            }
        }
    ]
}

-------------------------------
Allocate channel client 2
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "name": "video",
            "channels": [
                {
                    "expire": 180,
                    "initiator": true,
                    "endpoint": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
                    "channel-bundle-id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
                    "direction": "sendrecv",
                    "receive-simulcast-layer": -1,
                    "last-n": -1
                }
            ]
        }
    ]
}

-------------------------------
Allocate channel client 2 response
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "name": "video",
            "channels": [
                {
                    "id": "4d5031b0fa1e8e8b",
                    "receive-simulcast-layer": null,
                    "expire": 180,
                    "initiator": true,
                    "direction": "sendrecv",
                    "rtp-level-relay-type": "translator",
                    "channel-bundle-id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
                    "last-n": -1,
                    "sources": [
                        1508223701
                    ],
                    "endpoint": "b32fdb96-c3f6-434b-8d39-240c33984b7b"
                }
            ]
        }
    ],
    "channel-bundles": [
        {
            "id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
            "transport": {
                "pwd": "qe0h9unhhdkd891uq4rqv9kg7",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "4ubc71btp5a2rr",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                    ...
                ]
            }
        },
        {
            "id": "0f4af16f-95b5-4def-8963-eaba95134b07",
            "transport": {
                "pwd": "5ujl7arcqvcq8l2jtqe091k6bi",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "52thi1btp59ssd",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                    ...
                ]
            }
        }
    ]
}

-------------------------------
Offer to client 2
-------------------------------
v=0
o=- 1923518516 2 IN IP4 0.0.0.0
s=-
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS mixedmslabel
m=video 1 RTP/SAVPF 100 107
c=IN IP4 0.0.0.0
a=rtpmap:100 VP8/90000
a=fmtp:100 x-google-start-bitrate=800
a=rtcp:1 IN IP4 0.0.0.0
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=setup:actpass
a=mid:video
a=sendrecv
a=ice-ufrag:4ubc71btp5a2rr
a=ice-pwd:qe0h9unhhdkd891uq4rqv9kg7
a=fingerprint:sha-1 4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD
a=candidate:...
a=candidate:...
a=ssrc:1508223701 cname:mixed
a=ssrc:1508223701 label:mixedlabelvideo0
a=ssrc:1508223701 msid:mixedmslabel mixedlabelvideo0
a=ssrc:1508223701 mslabel:mixedmslabel
a=rtcp-mux

-------------------------------
Answer from Client 2
-------------------------------
index.js:203
v=0
o=- 6007042607899785091 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS CtZB12vuWMbgUNWuYdbEh0i3jmt6odq1bXFE
m=video 9 RTP/SAVPF 100
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:6f6I
a=ice-pwd:ht57ECK8EBpZGGuHj8rsl1Yv
a=ice-options:trickle
a=fingerprint:sha-256
94:03:45:79:A9:F4:11:48:2A:89:8E:94:E6:6A:59:56:4E:6E:5D:DB:F7:B3:3C:C5:B8:E0:00:33:06:12:9B:53
a=setup:active
a=mid:video
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=fmtp:100 x-google-start-bitrate=800
a=candidate:...
a=candidate:...
a=ssrc:4201738763 cname:ce+sBz3ZoypL+fc+
a=ssrc:4201738763 msid:CtZB12vuWMbgUNWuYdbEh0i3jmt6odq1bXFE
de8a9f7b-3d84-4b7d-a6a2-f384e0545849
a=ssrc:4201738763 mslabel:CtZB12vuWMbgUNWuYdbEh0i3jmt6odq1bXFE
a=ssrc:4201738763 label:de8a9f7b-3d84-4b7d-a6a2-f384e0545849

-------------------------------
Answer from Client 2 converted to colibri for patching
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "channels": [
                {
                    "endpoint": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
                    "initiator": true,
                    "id": "4d5031b0fa1e8e8b",
                    "rtp-level-relay-type": "translator",
                    "expire": 180,
                    "payload-types": [
                        {
                            "id": 100,
                            "parameters": {
                                "rtcp-fb": [
                                    "ccm fir",
                                    "nack",
                                    "nack pli",
                                    "goog-remb"
                                ],
                                "fmtp": [
                                    "x-google-start-bitrate=800"
                                ]
                            },
                            "name": "VP8",
                            "clockrate": "90000"
                        }
                    ],
                    "channel-bundle-id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
                    "rtp-hdrexts": [
                        {
                            "id": 3,
                            "uri":
"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"
                        }
                    ],
                    "direction": "sendrecv",
                    "sources": [
                        "4201738763"
                    ]
                }
            ],
            "name": "video"
        }
    ],
    "channel-bundles": [
        {
            "id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
            "transport": {
                "candidates": [
                    ...
                ],
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "fingerprints": [
                    {
                        "fingerprint":
"94:03:45:79:A9:F4:11:48:2A:89:8E:94:E6:6A:59:56:4E:6E:5D:DB:F7:B3:3C:C5:B8:E0:00:33:06:12:9B:53",
                        "setup": "active",
                        "hash": "sha-256"
                    }
                ],
                "ufrag": "6f6I",
                "pwd": "ht57ECK8EBpZGGuHj8rsl1Yv",
                "rtcp-mux": true,
                "network": 2
            }
        }
    ]
}

-------------------------------
Response from JVB after client 2 answer patch
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "name": "video",
            "channels": [
                {
                    "id": "4d5031b0fa1e8e8b",
                    "receive-simulcast-layer": null,
                    "expire": 180,
                    "ssrcs": [
                        4201738763
                    ],
                    "initiator": true,
                    "direction": "sendrecv",
                    "rtp-level-relay-type": "translator",
                    "channel-bundle-id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
                    "last-n": -1,
                    "sources": [
                        1508223701
                    ],
                    "endpoint": "b32fdb96-c3f6-434b-8d39-240c33984b7b"
                }
            ]
        }
    ],
    "channel-bundles": [
        {
            "id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
            "transport": {
                "pwd": "qe0h9unhhdkd891uq4rqv9kg7",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "4ubc71btp5a2rr",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                    ...
                ]
            }
        },
        {
            "id": "0f4af16f-95b5-4def-8963-eaba95134b07",
            "transport": {
                "pwd": "5ujl7arcqvcq8l2jtqe091k6bi",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "52thi1btp59ssd",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                    ...
                ]
            }
        }
    ]
}

-------------------------------
Renegotiation offer to client 1
-------------------------------
v=0
o=- 1923518516 2 IN IP4 0.0.0.0
s=-
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS mixedmslabel
m=video 1 RTP/SAVPF 100 107
c=IN IP4 0.0.0.0
a=rtpmap:100 VP8/90000
a=fmtp:100 x-google-start-bitrate=800
a=rtcp:1 IN IP4 0.0.0.0
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=setup:actpass
a=mid:video
a=sendrecv
a=ice-ufrag:52thi1btp59ssd
a=ice-pwd:5ujl7arcqvcq8l2jtqe091k6bi
a=fingerprint:sha-1 4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD
a=candidate:...
a=candidate:...
a=ssrc:1508223701 cname:mixed
a=ssrc:1508223701 label:mixedlabelvideo0
a=ssrc:1508223701 msid:mixedmslabel mixedlabelvideo0
a=ssrc:1508223701 mslabel:mixedmslabel
a=ssrc:4201738763 cname:ce+sBz3ZoypL+fc+
a=ssrc:4201738763 msid:CtZB12vuWMbgUNWuYdbEh0i3jmt6odq1bXFE
de8a9f7b-3d84-4b7d-a6a2-f384e0545849
a=rtcp-mux

-------------------------------
Renegotiation answer from client 1
-------------------------------
v=0
o=- 3110730218561131439 4 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS kVJenYHpnqcEbeWZ4K5ZjyXWsoZuDlJ1g3ix
m=video 24000 RTP/SAVPF 100
c=IN IP4 ...
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:...
a=candidate:...
a=ice-ufrag:IhaH
a=ice-pwd:zsrkRLVz8PS3/5a5PirgEmY4
a=ice-options:trickle
a=fingerprint:sha-256
A2:7E:5E:EB:43:62:EE:7C:A9:31:24:A6:2B:0E:DD:C0:40:F7:06:9C:65:8F:CC:2D:44:2C:EC:97:F7:52:8F:20
a=setup:active
a=mid:video
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=fmtp:100 x-google-start-bitrate=800
a=candidate:...
a=candidate:...
a=ssrc:797742646 cname:wtNu2JR794OlYov0
a=ssrc:797742646 msid:kVJenYHpnqcEbeWZ4K5ZjyXWsoZuDlJ1g3ix
5715e9f9-b063-4d14-b747-f44bb69ae271
a=ssrc:797742646 mslabel:kVJenYHpnqcEbeWZ4K5ZjyXWsoZuDlJ1g3ix
a=ssrc:797742646 label:5715e9f9-b063-4d14-b747-f44bb69ae271

-------------------------------
Renegotiation answer from Client 1 converted to colibri for patching
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "channels": [
                {
                    "endpoint": "0f4af16f-95b5-4def-8963-eaba95134b07",
                    "initiator": true,
                    "id": "6b9cc0988d8a5f0c",
                    "rtp-level-relay-type": "translator",
                    "expire": 180,
                    "payload-types": [
                        {
                            "id": 100,
                            "parameters": {
                                "rtcp-fb": [
                                    "ccm fir",
                                    "nack",
                                    "nack pli",
                                    "goog-remb"
                                ],
                                "fmtp": [
                                    "x-google-start-bitrate=800"
                                ]
                            },
                            "name": "VP8",
                            "clockrate": "90000"
                        }
                    ],
                    "channel-bundle-id": "0f4af16f-95b5-4def-8963-eaba95134b07",
                    "rtp-hdrexts": [
                        {
                            "id": 3,
                            "uri":
"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"
                        }
                    ],
                    "direction": "sendrecv",
                    "sources": [
                        "797742646"
                    ]
                }
            ],
            "name": "video"
        }
    ],
    "channel-bundles": [
        {
            "id": "0f4af16f-95b5-4def-8963-eaba95134b07",
            "transport": {
                "candidates": [
                    ...
                ],
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "fingerprints": [
                    {
                        "fingerprint":
"A2:7E:5E:EB:43:62:EE:7C:A9:31:24:A6:2B:0E:DD:C0:40:F7:06:9C:65:8F:CC:2D:44:2C:EC:97:F7:52:8F:20",
                        "setup": "active",
                        "hash": "sha-256"
                    }
                ],
                "network": 3,
                "tcptype": null,
                "ufrag": "IhaH",
                "pwd": "zsrkRLVz8PS3/5a5PirgEmY4",
                "rtcp-mux": true
            }
        }
    ]
}

-------------------------------
Response from JVB after client 1 renegotiation answer patch
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "name": "video",
            "channels": [
                {
                    "id": "6b9cc0988d8a5f0c",
                    "receive-simulcast-layer": null,
                    "expire": 180,
                    "ssrcs": [
                        797742646
                    ],
                    "initiator": true,
                    "direction": "sendrecv",
                    "rtp-level-relay-type": "translator",
                    "channel-bundle-id": "0f4af16f-95b5-4def-8963-eaba95134b07",
                    "last-n": -1,
                    "sources": [
                        1508223701
                    ],
                    "endpoint": "0f4af16f-95b5-4def-8963-eaba95134b07"
                }
            ]
        }
    ],
    "channel-bundles": [
        {
            "id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
            "transport": {
                "pwd": "qe0h9unhhdkd891uq4rqv9kg7",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "4ubc71btp5a2rr",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                    ...
                ]
            }
        },
        {
            "id": "0f4af16f-95b5-4def-8963-eaba95134b07",
            "transport": {
                "pwd": "5ujl7arcqvcq8l2jtqe091k6bi",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "52thi1btp59ssd",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                    ...
                ]
            }
        }
    ]
}

-------------------------------
Renegotiation offer to client 2
-------------------------------
v=0
o=- 1923518516 2 IN IP4 0.0.0.0
s=-
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS mixedmslabel
m=video 1 RTP/SAVPF 100 107
c=IN IP4 0.0.0.0
a=rtpmap:100 VP8/90000
a=fmtp:100 x-google-start-bitrate=800
a=rtcp:1 IN IP4 0.0.0.0
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=setup:actpass
a=mid:video
a=sendrecv
a=ice-ufrag:4ubc71btp5a2rr
a=ice-pwd:qe0h9unhhdkd891uq4rqv9kg7
a=fingerprint:sha-1 4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD
a=candidate:...
a=candidate:...
a=ssrc:1508223701 cname:mixed
a=ssrc:1508223701 label:mixedlabelvideo0
a=ssrc:1508223701 msid:mixedmslabel mixedlabelvideo0
a=ssrc:1508223701 mslabel:mixedmslabel
a=ssrc:797742646 cname:wtNu2JR794OlYov0
a=ssrc:797742646 msid:kVJenYHpnqcEbeWZ4K5ZjyXWsoZuDlJ1g3ix
5715e9f9-b063-4d14-b747-f44bb69ae271
a=rtcp-mux

-------------------------------
Renegotiation answer from client 2
-------------------------------
v=0
o=- 6007042607899785091 3 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS CtZB12vuWMbgUNWuYdbEh0i3jmt6odq1bXFE
m=video 24010 RTP/SAVPF 100
c=IN IP4 83.233.94.15
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:...
a=candidate:...
a=ice-ufrag:6f6I
a=ice-pwd:ht57ECK8EBpZGGuHj8rsl1Yv
a=ice-options:trickle
a=fingerprint:sha-256
94:03:45:79:A9:F4:11:48:2A:89:8E:94:E6:6A:59:56:4E:6E:5D:DB:F7:B3:3C:C5:B8:E0:00:33:06:12:9B:53
a=setup:active
a=mid:video
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=fmtp:100 x-google-start-bitrate=800
a=ssrc:4201738763 cname:ce+sBz3ZoypL+fc+
a=ssrc:4201738763 msid:CtZB12vuWMbgUNWuYdbEh0i3jmt6odq1bXFE
de8a9f7b-3d84-4b7d-a6a2-f384e0545849
a=ssrc:4201738763 mslabel:CtZB12vuWMbgUNWuYdbEh0i3jmt6odq1bXFE
a=ssrc:4201738763 label:de8a9f7b-3d84-4b7d-a6a2-f384e0545849

-------------------------------
Renegotiation answer from Client 2 converted to colibri for patching
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "channels": [
                {
                    "endpoint": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
                    "initiator": true,
                    "id": "4d5031b0fa1e8e8b",
                    "rtp-level-relay-type": "translator",
                    "expire": 180,
                    "payload-types": [
                        {
                            "id": 100,
                            "parameters": {
                                "rtcp-fb": [
                                    "ccm fir",
                                    "nack",
                                    "nack pli",
                                    "goog-remb"
                                ],
                                "fmtp": [
                                    "x-google-start-bitrate=800"
                                ]
                            },
                            "name": "VP8",
                            "clockrate": "90000"
                        }
                    ],
                    "channel-bundle-id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
                    "rtp-hdrexts": [
                        {
                            "id": 3,
                            "uri":
"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"
                        }
                    ],
                    "direction": "sendrecv",
                    "sources": [
                        "4201738763"
                    ]
                }
            ],
            "name": "video"
        }
    ],
    "channel-bundles": [
        {
            "id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
            "transport": {
                "candidates": [
                    ...
                ],
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "fingerprints": [
                    {
                        "fingerprint":
"94:03:45:79:A9:F4:11:48:2A:89:8E:94:E6:6A:59:56:4E:6E:5D:DB:F7:B3:3C:C5:B8:E0:00:33:06:12:9B:53",
                        "setup": "active",
                        "hash": "sha-256"
                    }
                ],
                "network": 2,
                "ufrag": "6f6I",
                "pwd": "ht57ECK8EBpZGGuHj8rsl1Yv",
                "rtcp-mux": true
            }
        }
    ]
}

-------------------------------
Response from JVB after client 2 renegotiation answer patch
-------------------------------
{
    "id": "749e09f825e5934",
    "contents": [
        {
            "name": "video",
            "channels": [
                {
                    "id": "4d5031b0fa1e8e8b",
                    "receive-simulcast-layer": null,
                    "expire": 180,
                    "ssrcs": [
                        4201738763
                    ],
                    "initiator": true,
                    "direction": "sendrecv",
                    "rtp-level-relay-type": "translator",
                    "channel-bundle-id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
                    "last-n": -1,
                    "sources": [
                        1508223701
                    ],
                    "endpoint": "b32fdb96-c3f6-434b-8d39-240c33984b7b"
                }
            ]
        }
    ],
    "channel-bundles": [
        {
            "id": "b32fdb96-c3f6-434b-8d39-240c33984b7b",
            "transport": {
                "pwd": "qe0h9unhhdkd891uq4rqv9kg7",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "4ubc71btp5a2rr",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                    ...
                ]
            }
        },
        {
            "id": "0f4af16f-95b5-4def-8963-eaba95134b07",
            "transport": {
                "pwd": "5ujl7arcqvcq8l2jtqe091k6bi",
                "rtcp-mux": true,
                "fingerprints": [
                    {
                        "fingerprint":
"4C:E8:E7:7E:B3:20:E5:57:EF:2D:35:1D:B0:9F:5E:70:81:47:41:CD",
                        "hash": "sha-1",
                        "setup": "actpass"
                    }
                ],
                "ufrag": "52thi1btp59ssd",
                "xmlns": "urn:xmpp:jingle:transports:ice-udp:1",
                "candidates": [
                    ...
                ]
            }
        }
    ]
}


#2

Hi Marcus,

Hi,

I'm trying to setup video streams between two Chrome based webrtc
clients using the Jitsi videobridge (JVB) and a custom signaling
server. For each client, the signaling server allocates one video
channel on JVB and creates an SDP offer based on the colibri reply
from JVB. The client SDP answer is converted to colibri by the
signaling server and patched to the JVB video channel.

When the second client joins, it first gets an offer with only the JVB
SSRC, and then a renegotiation offer with both client 1 SSRC and JVB
SSRC, client 1 is renegotiated with client 2 SSRC as well.

The problem is this: Client 1 starts receiving video from client 2
immediately, but client 2 only receives video from client 1 after up
to a minute (if at all).

I've searched through the mailing lists, and there seems to be a few
other that have had similar problems. Some have been related to
recvonly channels, which is not the case here. Both channels are
sendrecv. The other suggestion was to renegotiate client 2 as
described above which did not solve the problem.

I'm guessing it's RTCP related, that a PLI, FIR or Nack should have
been sent from client 2 and acted on by client 1. Not sure if JVB is
discarding the RTCP packet or if Chrome fails to send one.

Below is the SDP and colibri flow. Any help is appreciated.

With a quick glance I don't see any problems with the colibri flow.

Since video appears after a minute I would suspect that the receiver can not decode the incoming stream, and PLI/FIRs fail for some reason.

PLIs and FIRs are terminated by jitsi-videobridge (if it receives a PLI it will not forward it, but will instead generate a PLI/FIR of its own).

Things you can do to further diagnose the problem:
1. Look at webrtc-internals for the client that does not render video. Is it receiving data? Is it sending PLIs or FIRs?
2. Look at the jitsi-videobridge logs for "sending an fir" and "sending a pli".

Regards,
Boris

···

On 31/10/2017 09:35, Marcus - wrote:


#3

Hi Marcus,

Ditto what Boris said. You may also be hitting https://github.com/jitsi/jitsi-videobridge/issues/553.

Regards,
George

···

On Oct 31, 2017, at 12:44 PM, Boris Grozev <boris@jitsi.org> wrote:

Hi Marcus,

On 31/10/2017 09:35, Marcus - wrote:

Hi,
I'm trying to setup video streams between two Chrome based webrtc
clients using the Jitsi videobridge (JVB) and a custom signaling
server. For each client, the signaling server allocates one video
channel on JVB and creates an SDP offer based on the colibri reply
from JVB. The client SDP answer is converted to colibri by the
signaling server and patched to the JVB video channel.
When the second client joins, it first gets an offer with only the JVB
SSRC, and then a renegotiation offer with both client 1 SSRC and JVB
SSRC, client 1 is renegotiated with client 2 SSRC as well.
The problem is this: Client 1 starts receiving video from client 2
immediately, but client 2 only receives video from client 1 after up
to a minute (if at all).
I've searched through the mailing lists, and there seems to be a few
other that have had similar problems. Some have been related to
recvonly channels, which is not the case here. Both channels are
sendrecv. The other suggestion was to renegotiate client 2 as
described above which did not solve the problem.
I'm guessing it's RTCP related, that a PLI, FIR or Nack should have
been sent from client 2 and acted on by client 1. Not sure if JVB is
discarding the RTCP packet or if Chrome fails to send one.
Below is the SDP and colibri flow. Any help is appreciated.

With a quick glance I don't see any problems with the colibri flow.

Since video appears after a minute I would suspect that the receiver can not decode the incoming stream, and PLI/FIRs fail for some reason.

PLIs and FIRs are terminated by jitsi-videobridge (if it receives a PLI it will not forward it, but will instead generate a PLI/FIR of its own).

Things you can do to further diagnose the problem:
1. Look at webrtc-internals for the client that does not render video. Is it receiving data? Is it sending PLIs or FIRs?
2. Look at the jitsi-videobridge logs for "sending an fir" and "sending a pli".

Regards,
Boris

_______________________________________________
users mailing list
users@jitsi.org <mailto:users@jitsi.org>
Unsubscribe instructions and other list options:
http://lists.jitsi.org/mailman/listinfo/users


#4

Thanks for the quick reply!

It seems like it was indeed related to the issue you posted. Patching
the channel yet again with a "last-n" change triggers a keyframe and
video appears right away.

Regards
Marcus

···

On Tue, Oct 31, 2017 at 6:52 PM, George Politis <gp@jitsi.org> wrote:

Hi Marcus,

Ditto what Boris said. You may also be hitting
https://github.com/jitsi/jitsi-videobridge/issues/553.

Regards,
George

On Oct 31, 2017, at 12:44 PM, Boris Grozev <boris@jitsi.org> wrote:

Hi Marcus,

On 31/10/2017 09:35, Marcus - wrote:

Hi,
I'm trying to setup video streams between two Chrome based webrtc
clients using the Jitsi videobridge (JVB) and a custom signaling
server. For each client, the signaling server allocates one video
channel on JVB and creates an SDP offer based on the colibri reply
from JVB. The client SDP answer is converted to colibri by the
signaling server and patched to the JVB video channel.
When the second client joins, it first gets an offer with only the JVB
SSRC, and then a renegotiation offer with both client 1 SSRC and JVB
SSRC, client 1 is renegotiated with client 2 SSRC as well.
The problem is this: Client 1 starts receiving video from client 2
immediately, but client 2 only receives video from client 1 after up
to a minute (if at all).
I've searched through the mailing lists, and there seems to be a few
other that have had similar problems. Some have been related to
recvonly channels, which is not the case here. Both channels are
sendrecv. The other suggestion was to renegotiate client 2 as
described above which did not solve the problem.
I'm guessing it's RTCP related, that a PLI, FIR or Nack should have
been sent from client 2 and acted on by client 1. Not sure if JVB is
discarding the RTCP packet or if Chrome fails to send one.
Below is the SDP and colibri flow. Any help is appreciated.

With a quick glance I don't see any problems with the colibri flow.

Since video appears after a minute I would suspect that the receiver can not
decode the incoming stream, and PLI/FIRs fail for some reason.

PLIs and FIRs are terminated by jitsi-videobridge (if it receives a PLI it
will not forward it, but will instead generate a PLI/FIR of its own).

Things you can do to further diagnose the problem:
1. Look at webrtc-internals for the client that does not render video. Is it
receiving data? Is it sending PLIs or FIRs?
2. Look at the jitsi-videobridge logs for "sending an fir" and "sending a
pli".

Regards,
Boris

_______________________________________________
users mailing list
users@jitsi.org
Unsubscribe instructions and other list options:
http://lists.jitsi.org/mailman/listinfo/users