Mute Video For Remote User

Hi @damencho,

I have tried to implement “Mute Video for Remote Participant”. For this as suggested here

I have implemented new IQ with separate video namespace and added the following in handleVideoMuteRequest() function in ColibriConferenceImpl class.

ColibriConferenceIQ.Content videoContent
= channelsInfo.getContent(“video”);
ColibriConferenceIQ.Channel videoChannel
= videoContent.getChannel(0);
videoChannel.setDirection(MediaDirection.SENDONLY.toString());

But video is not getting muted as audio get mute.

Getting following error in JVB log:

WARNING: [131] [confId=755bba3ace231528 epId=47c760d8 gid=ff4cf6 stats_id=Alex-bi3 conf_name=amit] Endpoint.updateForceMute#1548: Tried to mute the incoming video stream, but that is not currently supported.

Please suggest where i am making mistake.

Thanks in advance.

It needs a jvb change.

Hi @damencho,

JVB change from my side or it is never implemented in JVB.
Can you suggest what changes required in JVB.

Thanks,

Hi @damencho,

Any suggestion.

Take a look at this change which was for audio https://github.com/jitsi/jitsi-videobridge/commit/4cf3ce1fbcd534ab0d0ab2fa83bd1aa5fa1bb2a0
And you can try implementing the video one from there.

Hi @damencho,

I have checked following.

  1. There is a function transceiver.forceMuteAudio() function in file Endpoint.java and i need to make transceiver.forceMuteVideo() function.
  2. The transceiver object is defined in RtpReceiver object from the media-transform library, where the forceMuteAudio() is defined i need to define forceMuteVideo() in this file (" RtpReceiver.kt).

But my query is that is this enough to mute video. Until it is implemented at Media level.

Am i going in right way or there is another better option available.

Thanks,
Amit Sharma

You need that and you also need to implement it in jicofo, the same way it is done for audio.

@amitsharma1576
Are you able to make it work after adding MuteVideo() in Rtp-Receiver?
Let me know if I also follow same path…

@amitsharma1576 Did you make any progress on this feature? We are currently evaluating the same functionality and trying to extend the video bridge to allow remote video “mute”.

@damencho Would discarding the video package in RtpReceiverImpl.kt be the right way to go or what would be your recommendation?
I’m asking because for audio the discard package flag was set in the AudioLevelReader so we need a different approach for video.

For the rest of the functionality we would do basically the same as seen in these PR’s allow muting via setting the direction a channel by bbaldino · Pull Request #1179 · jitsi/jitsi-videobridge · GitHub Allow force muting an audio stream by bbaldino · Pull Request #249 · jitsi/jitsi-media-transform · GitHub

@bbaldino Can you step in for video muting ^ :slight_smile:

What are the requirements for this? One way to do it would be to use an EndpointMessage over the bridge channel addressed to the user that you want to mute. Then the client, when receiving this message, would mute itself. If you just want a ‘courteous’ version of this, it would work (but the muted client would be able to unmute themselves).

If you need a ‘stricter’ version, where a client sends this message to the bridge and it is enforced there, I think you’d need to figure out some other things like enforcing some moderator role as to who was allowed to do this (as well as who was allowed to undo it).

@bbaldino this is for implementing video muting, as we have audio muting from jicofo.
It is from jicofo to the bridge.

Oops, sorry…that’s what I get for not reading through the whole thread :slight_smile:

Yeah, so I’d mirror the calls for forceMuteAudio in Transceiver and RtpReceiver, but for the actual method you’ll have to do something new…I think you’ll need to add a new node into the receiver pipeline which will drop the video packets if they’re muted. Ideally you’d make this similar to audio where they go through parts of the decryption process to be accounted for, but don’t actually waste the time decrypting them.

@bbaldino Sounds reasonable. Thanks for pointing us in the right direction. Any preferences regarding the naming? I think “mute” video is somehow misleading. Should we name it forceDeactivateVideo?

I think “mute” would be good, since that’s what we use for audio.

@bbaldino @damencho Uh, this was a much bigger change than expected… but we got it working. It required PRs to 6 different projects. All of these PRs are now online: Added mute video moderation feature by skolmer · Pull Request #327 · jitsi/jitsi-media-transform · GitHub

3 Likes

@skolmer thanks for this feature. Looks like the PR got merged. How do I test it out?

You can test it on https://alpha.jitsi.net

Nice! I’d like to test in my dev environment though. Is there a packaged version I can install?

I don’t think there is a docker release yet so you have to build every component yourself based on the master branch.