Sender Report availability on PeerConnection via Streaming Plugin

We use the streaming plugin on the “legacy” Janus to broadcast content by using ffmpeg to pull in a remote rtsp stream and write out the rtp/rtcp to different ports that the streaming plugin pulls in.

The video broadcast on the client side looks great, but one of the items that we’d like to do is try to coordinate some sort of validation/indication on the client that the frames being displayed are not latent. Really just to say we want to do something with the track if the frames really aren’t “live” within some threshold of seconds due to networking using the NTP timestamp from the rtsp source.

I know that the NTP timestamp is sent in the RTCP Sender Report that FFMPEG drops unto the videortcpport that the plugin is listening on for our stream. But I’m not seeing any way to view the statistics of that Sender Report anywhere on my client’s PeerConnections.

When I was looking at the ICD for the RTCPeerConnection, it looks like in the specification we should be able to call getSenders() and then getStats(), to grab the remote-outbound-rtp/remote-inbound-rtp reports to collect data found in the RTCP Sender Report like the remoteTimestamp.

But for connections made through the streaming plugin, despite receiving the media track and receiving the video broadcast, the getSenders() is empty, so those corresponding reports are not available.

Is it expected that I wouldn’t see any senders (or their corresponding reports) from a stream that was forwarded over to the videoport/videortcpport ports for the streaming plugin?

And if so, is there an option to have that RtpSender available on the PeerConnection or another way to have that NTP timestamp available on the client’s PeerConnection?

Janus terminates most RTCP messages, including SR and RR. Any SR you send to the Streaming plugin will be dropped, as Janus originates its own SR on the WebRTC leg. Only messages like PLI and a few others go through.

Thank you for taking the time to get back to me.

Poking around it looks like we could possibly rig something up ourselves if we upgrade to the 1.X version using https://github.com/meetecho/janus-gateway/pull/3258 from a bit back and coordinating the rtpTimestamp if I’m following what that does correctly.

Based on your reply above though, if Janus originates its own SR for the WebRTC leg, then should we expect to have a registered RTCRtpSender on our client’s peer connection? Right now, getSenders() is returning an empty list. Is that expected for the streaming plugin?

abs-capture-time was merged from this other PR. Then this is how you use it in the Streaming plugin.

No. That’s for the browser as a sender.