arnellebalane / google-meet-pip Goto Github PK
View Code? Open in Web Editor NEWChrome extension to display a selected Google Meet participant's video in a Picture-in-Picture window
License: MIT License
Chrome extension to display a selected Google Meet participant's video in a Picture-in-Picture window
License: MIT License
Challenges for this feature would be identifying who is currently speaking, and detecting changes to the current speaker.
As I reported in #19, the extension stopped working after the recent releases - the PiP window immediately disappears just after showing up. Today I finally found some time to play a bit with the code and I found that:
google-meet-pip/src/lib/google-meet.js
Lines 193 to 200 in 55842e6
If you have your camera turned off, set the camera as inactive and... close the PiP window.
which of course doesn't make sense if we display another person's video in PiP, not ourselves. Due to that the extension is unusable, but after removing theexitPictureInPicture();
line - the problem is solved.
cc: @arnellebalane
I tried to use the extension for the first time, downloading from Google Extensions, I couldn't use the extension!
Currently when Picture-in-Picture API is not supported, the page action remains disabled and the content script will just log something to the console. This is potentially confusing for some users who might wonder why they can't enable the extension while they are in a Google Meet meeting.
To address this, the page action can be enabled regardless if PiP is supported or not. We can display custom popup UI when PiP is not supported instead.
Hey, I would like to have something like this. Whenever I share my entire screen it is hard to mute and unmute. Is there any way to add the mute and unmute button to the pip extension. If it is possible it will be very helpful. Thank you.
The way meeting participants are detected right now is at follows:
video
elements on the pagevideo
elements, it tries to traverse the DOM to identify the name of that participantvideo
elements even when they only joined once)This current way causes some participants not appearing in the list of participants to choose from (i.e. when they don't have their camera enabled, they might not have a video
element associated with them).
Some improvements that can be done are:
Hi there! Why does the extension need access to the browsing history?
Thanks!
When you leave the meeting while Picture-in-Picture is open, the video just freezes and doesn't close automatically. It would be great to close it when the user is no longer in the meeting (leave meeting, close tab, navigate to another page, etc.)
Basically a Chrome update now requires requestPictureInPicture
calls to require a user gesture. So we can't call it now from the popup window of the extension. We need to move the buttons that enable Picture-in-Picture directly into the page itself so the user needs to click on it.
The current idea is to add a Picture-in-Picture button in each video in the call, and the user will click on the button for participant that they want to place in a PiP window. We will also phase out the PiP extension popup UI.
The current behavior only enables it in a Google Meet meeting URL, but there are cases where it fails:
It should be just safe to enable the extension all the time as long as we're in Google Meet. The popup UI will display the appropriate error in case the user is not in a meeting.
how implement pip like google meet based with exciting features?
Hi, when clicking "Show" button from the pop-up - the PiP window appears for less than second in the bottom right corner, then disappears and no more happens, so the extension at the moment is unfortunately unusable ๐
Right now errors in activatePictureInPicture
and exitPictureInPicture
are just logged to the console. It would be better if we update the popup UI and let the user know that something went wrong.
As in the title - I can select my video to display in the PiP window if it's a tile, but if not (== it's a floating window in a corner, which is the default GMeet behaviour) - it's not visible on the list. The reason is the below function:
google-meet-pip/src/lib/google-meet.js
Lines 51 to 61 in 55842e6
children.find((child) => 'selfName' in child.dataset)
doesn't find anything.
Fortunately there's a more generic solution to that, which also makes the function simpler - I will send it in a moment in a PR.
cc: @arnellebalane
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.