Hey there! An amazingly flexible project you guys crafted there! Great job, thanks for it!
However I’m facing a very frustrating issue, which I couldn’t resolve past few days. I have an android app, that captures the screen and sends it to my Janus Server via a Streaming Plugin Handle. (for that purpose, I’m using an open-source implementation called Apuppet-android apuppet-android/app/src/main/java/com/hmdm/control/janus/JanusStreamingPlugin.java at 88406391ce5f8a5e730bc82b8c098d3fd22fcf4a · MrYoda/apuppet-android · GitHub) Which effectively creates the Streaming Plugin session with:
{
message: {
request: "create",
type: "rtp",
permanent: false,
is_private: false,
video: true,
audio: false,
id: "randomlyGenerated8Letters",
pin: "randomlyGenerated4Letters",
videoport: 0,
videopt: 100,
videortpmap: "H264/90000",
videobufferkf: true,
}
}
So far so good. Then I implemented a web client (using janus.js), that joins the session and sends a simple “watch” request, and then “start” request right when I receive the JSEP. The problem is, the client receive the Video MediaTrack as muted initially, and it takes a random delay (varies a lot, from 10 seconds to 10 minutes) to receive it unmuting itself.
Remote track muted: Event {isTrusted: true, type: 'mute', target: MediaStreamTrack, currentTarget: MediaStreamTrack, eventPhase: 2, …}
Remote track flowing again: Event {isTrusted: true, type: 'unmute', target: MediaStreamTrack, currentTarget: MediaStreamTrack, eventPhase: 2, …}
When I debug using chrome://webrtc-internals
, I see it is actually sending a keyframe very frequently. The delay cannot be the keyframe frequency. But at this point I am very much lost, I don’t know what to check next. Could you please guide me on that?
Thanks a lot in advance