upstage-org / upstage

UpStage is a platform for cyberformance: remote players combine digital media in real-time for an online audience. All you need is a web browser!
https://upstage.org.nz
GNU General Public License v3.0
21 stars 0 forks source link

Individual Jitsi - not working properly #1313

Open helenvarley opened 1 month ago

helenvarley commented 1 month ago

i'm creating a new issue for this, specifically for the instability of individual Jitsi streams (not meeting). at the moment it seems that most of the time, the only person who can consistently see and hear an individual jitsi stream is the person whose stream it is. SOMETIMES it does work - for instance on 7/8/24, vicki & i were online for about 3 hours, testing both individual and meeting, and had pretty good individual jitsi streams most of the time. we each had a second laptop which also had fairly consistent performance for the individual streams. however today i tested with eva & petra; eva was logged in and petra was audience, with two laptops and her phone. most of the time nobody could see or hear the individual Jitsi streams except for the person whose stream it was. sometimes someone could hear something, sometimes they could see, but it was very inconsistent.

i've asked for help on the Jitsi forum - you can read the thread here: https://community.jitsi.org/t/videobridge-issues-in-upstage/133002/23

here are screengrabs from me & eva, showing how we could see each others' frame of the individual jitsi but not the image (or hear):

Screenshot from 2024-08-08 11:07:15 Bildschirmfoto 2024-08-08 um 11 07 43

helenvarley commented 1 month ago

and here are two from monday when eva & i were trying to rehearse:

signal-2024-08-06-122738_002 Screenshot from 2024-08-06 12-26-51

gloriajw commented 1 month ago

We need the help of Jitsi devs on this one. I cannot help here.

emrahcom commented 1 month ago

Do you create a Jitsi meeting room for individual stream?

helenvarley commented 1 month ago

individual stream. the meeting tool is mostly working as expected, so this issue is just for the individual streams.

emrahcom commented 1 month ago

Hi @helenvarley, I want to understand if the individual stream is based on Jitsi. If yes, do you create a Jitsi meeting for it?

I'm still not sure it is based on Jitsi. There are audio and video elements on the board for them but I couldn't see how they are related with Jitsi.

helenvarley commented 1 month ago

as far as i understand it's using jitsi videobridge. hopefullylne of the devs can explain more - although the dev who originally built it isn't working on UpStage at the moment (& that's why we're struggling to solve it). @gloriajw @webdev604 are either of you able to explain how the individual streams work?

vickis commented 1 month ago

Message ID: @.***>The meeting is created to enable the players and audience to join via audio and video on the stage together in the one window within the UpStage stage area 

Individual jitsi opens a container on the stage which enables 1 video and and audio stream with on stage audio but not the jitsi tools available 

gloriajw commented 1 month ago

@helenvarley you explained it just fine.

helenvarley commented 1 month ago

Do you create a Jitsi meeting room for individual stream?

no :smile:

emrahcom commented 1 month ago

If I understand correctly, the individual Jitsi is not based on Jitsi (even you call it as Jitsi), it is something else (maybe a stream through Node Media Server).

So, you don't need Jitsi support in this case.

As an alternative, you may use Jitsi with customization settings (to create the same effect) for the individual streams too. Since the meeting works, this should works also.

In my opinion, the initial designer of the system may give the best answer.

gloriajw commented 1 month ago

@emrahcom please understand that we are using Jitsi Videobridge as stated above. It is Jitsi.

emrahcom commented 1 month ago

Sorry, I misunderstood.

Is it possible for you to create the individual Jitsi element almost the same way creating the meeting? Differently, there will be a randomly generated UUID as meeting name and everything except the player's view in the Jitsi element will be disabled.

In this way, it should work like the meeting element but looks like the current individual Jitsi element. I recommends because this will be more stable than creating streams through Jitsi videobridge in a custom way.

gloriajw commented 1 month ago

We do not want to expose any controls to the members of the audience. Using Jitsi Meet instead of Jitsi Videobridge will not work for us, unless we can turn off Jitsi Meet control pane, so that audience members do not see it at all.

Can you give more details on how to turn off Jitsi Meet controls so they are not visible at all to certain users? I am not sure if the UUID you mention above does allow for the elimination of ALL control of the meeting.

emrahcom commented 1 month ago

You have already some customizations there.

2024-08-12-210720

You should repeat the same with some extra parameters. See config.js for possible options (some of them actually cannot be overwritten during the run time but most can be...)

For example you may overwrite toolbarButtons to disable buttons.

emrahcom commented 1 month ago

UUID is not for the elimination of all control. IIUC the application gets the meeting name from the player but no need to ask for a room name in this use case.

gloriajw commented 1 month ago

Thanks for this suggestion and detail.

webdev604 commented 1 month ago

hi @emrahcom I think all codes is in composable and Yourself for individual stream. first we need to fix stream issue. can you please check? thank you

emrahcom commented 1 month ago

Hi @webdev604,

It is difficult for me to set up a dev environment and test these codes.

These codes use the low level API for the individual stream. My suggestion is to use the external Jitsi API like in the meeting element.

webdev604 commented 1 month ago

hi @emrahcom image we got this error on our jitsi server. can you please help?

emrahcom commented 1 month ago

Looks like there is a missing part in your /usr/share/jitsi-meet/interface_config.js.

Does the following object have } at the end?

 var interfaceConfig = {
...
...
webdev604 commented 1 month ago

ah, right. it was missing. thank you

helenvarley commented 1 month ago

eva & i are rehearsing today on upstage.mur.at (which is i think using the same streaming server as upstage.live). after some initial difficulties with the meeting tool we managed to use it pretty well, but we had a lot of problems with the individual jitsi streams.

with individual jitsi streams, most of the time eva could see and hear me, i could hear her but not see her. there were also times when neither of us could see the other, but we could each see ourselves; and times when one or the other could not hear. we also connecting from phones, and on the phones there was nothing, no image or audio (but the meeting worked on phones). we took some screenshots but i don't know that they're really helpful - just shows us seeing out own webcam & not the other one.

we're going to use the meeting for the performance on friday evening & that will be a test of how it goes with more connections. it would be great if anyone has time to join, https://upstage.mur.at/whatmobliisesyou, and to monitor the stream server at the time. it's scheduled for 22:30 CET, which i know won't be a good time for you, wu.

helenvarley commented 1 month ago

just noting the two closed issues above, #1058 and #1091 - these may be useful to refer to if you want to see the ongoing inconsistensies ... ! but i think it must be all the same problem.

see also #1312

gloriajw commented 1 month ago

@emrahcom Jitsi Meet is working far better than Jitsi Videobridge. Thank you for your help with this. Greatly appreciated!

helenvarley commented 1 month ago

we still need to do more testing with individual jitsi streams, so i'll leave this open until we do that. but the meeting seems pretty reliable now, thank you! :)

emrahcom commented 1 month ago

I have a plan to create a test/dev environment (maybe on weekend) to work on the individual stream. Last weekend, I tried to install it but it didn't work.

Probably I will open a new issue to share the issues while installing my system and to get support for installation.

vickis commented 3 weeks ago

Individual jitsi is no longer available on dev-app

helenvarley commented 2 weeks ago

@gloriajw - we do still want to have the individual jitsi tool - wondering if you closed this because it's not fixable or what? on dev-app there is no individual jitsi thumbnail in the streams toolbar but does that mean it's not working at all, or just that the thumbnail needs to be reinstated?

gloriajw commented 2 weeks ago

Sorry, it is reopened. Why do we want an unreliable individual jitsi tool when it was replaced with a more reliable one? I am not understanding.

helenvarley commented 2 weeks ago

because they do two different things:

both are useful for different reasons.

gloriajw commented 2 weeks ago

So we haven't been able to turn off audience participation? This is the root of the issue?

helenvarley commented 2 weeks ago

no, not really - we do want to be able to have audience participation; we actually do want to have both the meeting, & the individual jitsi (or some other form of streaming just my own webcam and audio). the problems are:

the individual jitsi would be perfect already for indivdiual streams if it was there for late-comers and if we could be confident that it was always going to work (allowing of course for normal glitches & audiences on bad networks). the meeting would be perfect already if there was some modification to the jitsi tools (e.g. removal of the hang-up button)

gloriajw commented 2 weeks ago

Can we focus on functionality instead of the tool set, so this is less confusing for me? For functionality: what do you need the audience to be able to do and not do?

helenvarley commented 2 weeks ago

functionality for Meeting:

funtionality for Individual:

gloriajw commented 2 weeks ago

Thanks.

So, assuming Jitsi videobridge will not be modified to suit these needs, we should try to make jitsi meet work as closely as possible.

@webdev604 can you please see if there is a way to choose these options when starting allocating the jitsi window to the stage:

Also see if there's a way to make these happen always:

Thank you, @webdev604

helenvarley commented 2 weeks ago

just to add to this, regarding users muting & unmuting: as moderator of the jitsi meeting, a player can, with the jitsi tools, mute everyone, & allow people to unmute. however, it is quite tricky to do this as when you click on the meeting, you get the UpStage frame to resize and move the meeting. then you have to click away, and roll over the meeting, to get the jitsi tools; but this doesn't always happen, sometimes they just don't appear & you have to click around other things on the stage before they appear. & if you have made the meeting window small for some reason, you may not be able to access the jitsi tools that you need for the muting & unmuting. i guess there is probably nothing that we can do about this, but from a user's perspective it's a bit difficult.

gloriajw commented 2 weeks ago

@webdev604 : one more for your list: Please make the moderator tool available no matter what is happening with the window size and such. Let us know if you face jitsi constraints that prevent certain conditions.

gloriajw commented 2 weeks ago

What happened here is called Feature Creep, and it's confusing, so please try to not do this in the future.

We have an understood baseline of functionality with the individual tool. And then new functionality came along, and you want new features because of your realizations with the new tool. You bled them together and then said things don't work as they should, but some things simply didn't exist before, so there's no "before" of how they should work. We are trying to get this new tool to behave like the old one. THEN we can try to add new functionality based on how the tool is used. Please make two different lists of feature requests in the future.

helenvarley commented 2 weeks ago

i apologise for confusion. i did make this issue specifically for the problems we've had with the individual jitsi, & noted further back in this thread that the meeting tool is working mostly as expected. i think the confusion may have come in after emrah asked if it's possible to create the individual Jitsi element almost the same way creating the meeting, so then the explorations have gone down that path & conflated the individual & meeting together.

would it help to make new separate issues with use case scenarios for each?

gloriajw commented 2 weeks ago

No worries. I think right now, we have it straightened out into a list of features that make sense. I just want to make this software dev process easier going forward. All good!

helenvarley commented 2 weeks ago

it's easy to get confused! 🤪

emrahcom commented 2 weeks ago

Hi @webdev604,

If I update codes in upstage/studio/src/components/objects/Meeting/, I don't see any effect on UI. If I update codes in upstage/dashboard/src/components/objects/Meeting/, I see my changes.

Is this expected or something wrong in my setup?

emrahcom commented 1 week ago

If you update loadTrack in Jitsi.vue as follows, does it make any difference? This is only to understand the issue better, not as a solution...

    const loadTrack = () => {     
      setTimeout(loadTrack, 5000);
      const tracks = computed(() =>
        store.getters["stage/jitsiTracks"].filter(
          (t) => t.getParticipantId() === props.object.participantId,
        ),  
      );    
      const videoTrack = computed(() =>
        tracks.value.find((t) => t.type === "video"),
      );    
      const audioTrack = computed(() =>
        tracks.value.find((t) => t.type === "audio"),
      );    

      if (tracks.value.length) {  
        try {
          if (videoTrack.value) {
            videoTrack.value.attach(videoEl.value);
          } 
          if (audioTrack.value && !audioTrack.value.isLocal()) {
            audioTrack.value.attach(audioEl.value);
          } 
        } catch (error) {
          console.log("Error on attaching track", error);
        }   
      }     
    };
gloriajw commented 1 week ago

Is this to address the problems with Jitsi Videobridge, or Meet? Also, /dashboard is no longer in use. All active code is in /studio

emrahcom commented 1 week ago

Individual stream (videobridge)...

When I cloned the main branch, it didn't affect anything when I updated the codes in /studio. Probably related with my setup.

Could you try the same update in studio?

helenvarley commented 1 week ago

hi everyone on this issue, this thursday 19th september there will be an UpStage performance that uses both individual jitsi and the meeting (as they currently function in the version on upstage.live). if you have time to join the performance, it is a good opportunity to see these tools in action. we are using the individual jitsi for the introduction (video & audio) then for a single audio stream; and at a point in the performance we want the audience to join with their voices, so putting on a meeting and allowing everyone to unmute.

in our rehearsals so far everything has been pretty stable, the main issues being that if someone enters after an individual stream is already placed on the stage they will not get it (so we are stressing the importance of arriving on time) and the user difficulties of operating the jitsi meeting tools within UpStage (sometimes difficult to be able to click the button you need to click, due to either having UpStage tools rather than Jitsi, or not being able to find the Jitsi tools).

the performance is about 30 minutes long, & starts at 20:15 CET. time converter, stage link & other information are here: https://upstage.org.nz/?event=nice-girls & you are all warmly invited :smiley:

helenvarley commented 1 week ago

hi all, i've created issues #1331 and #1332 to try to be clear about the requirements for jitsi Meeting, and for Individual jitsi.