Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blackout/blur/freeze screen sharing temporarily #15616

Open
bilogic opened this issue Feb 18, 2025 · 8 comments
Open

Blackout/blur/freeze screen sharing temporarily #15616

bilogic opened this issue Feb 18, 2025 · 8 comments
Labels
feature-request Issue which suggest an idea, enhancement or feature to implement

Comments

@bilogic
Copy link

bilogic commented Feb 18, 2025

What problem are you trying to solve?

Sometimes I need to access sensitive data during screen sharing, but it's a chore to stop the share, cause everyone's screens to re-arrange, do whatever I need and then share again, and again causing everyone's screen to re-arrange a 2nd time.

What solution would you like to see?

Would be great if there was an option to toggle either blackout, blur or freeze the share, with blur being the most preferable since there is still movement to indicate everything is ok, and just being obsured intentionally.

Is there an alternative?

Yes, but it involves multiple steps and dialogs and disruptive to the viewer

@bilogic bilogic added the feature-request Issue which suggest an idea, enhancement or feature to implement label Feb 18, 2025
@bilogic
Copy link
Author

bilogic commented Feb 20, 2025

I like to push this a bit further but restricted by my knowledge of JS/TS, anyone who wants to join is welcomed.

  1. Possibly reuse the background blur filter
  2. Add an eye icon at the red box to toggle the blur
    Image

@saghul
Copy link
Member

saghul commented Feb 20, 2025

It's not a good idea to use blur because it uses segmentation to cut the human from the background.

This would need to be a local pause operation or some signaling so the bridge doesn't forward the screen anymore.

@bilogic
Copy link
Author

bilogic commented Feb 20, 2025

Why is it not a good idea? Too CPU intensive? Perhaps a simpler filter?

I much rather the stream continue uninterrupted so that the viewer experience isn't disrupted.

Pausing/black may lead the less savvy viewers to complain they cannot get video and open up rabbit holes.

If their complaint was blur video, other viewers may be more confident to help explain to them the concept of blurring.

@saghul
Copy link
Member

saghul commented Feb 20, 2025

Because it's CPU intensive and our blur will try to find a person to cut it out, which you don't really want and aside from the resource consumption, it may create weird artifacts depending on the content..

@bilogic
Copy link
Author

bilogic commented Feb 20, 2025

ok thanks for that info, I think my progressive strategy is,

  1. Implement a blur for screen sharing first
  2. Make it togglable in code
  3. Eventually expose it on the UI

Any idea where is the best place to intercept 1?

@saghul
Copy link
Member

saghul commented Feb 20, 2025

In order to do that you'll need to write out the stream to a canvas to apply the blur, and then use thhe effects a API to replace the stream.

IMHO that is quite the lift and I don't know it would be acceptable.

As a start I'd simply flip the track's enabled flag to false. That will trigger black video. Once the whole mechanism is working from the UI we can see which way to go, but I'd start with the simplest.

@bilogic
Copy link
Author

bilogic commented Feb 20, 2025

ok, I will go with triggering black video, if you would be so kind of point out where that code might be, I will do the actual lifting and report back here.

@saghul
Copy link
Member

saghul commented Feb 20, 2025

The tracks will be in the features/base/tracks redux store.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request Issue which suggest an idea, enhancement or feature to implement
Projects
None yet
Development

No branches or pull requests

2 participants