Galène videoconferencing server discussion list archives
 help / color / mirror / Atom feed
* [Galene] Galene & Raspberry
@ 2022-04-27  5:01 Fabrice Rouillier
  2022-04-27 12:10 ` [Galene] " Juliusz Chroboczek
  2022-04-28 16:11 ` Juliusz Chroboczek
  0 siblings, 2 replies; 8+ messages in thread
From: Fabrice Rouillier @ 2022-04-27  5:01 UTC (permalink / raw)
  To: galene

Hi all,

Just a few words about Galène on Raspberry PI 4 with 4 GB of RAM, and possibly one question.

This combo works incredibly well in the following configuration :

OS :
- 64 bit Raspbian
- Wired connection and no wifi configured

Galene :
- No simulcast as default 

In addition, I am using a second machine (Mac MI) that acts as a reverse proxy (docker+traefik)  for my entire network which is itself behind an internet box (Freebox pop)

In particular, compared with the situation with a 32 bit OS and a default configuration for the wireless : 

- the clients connect much more quickly
- the charge of the RPI stays very low (with 4 people connected the change of each core did stay below 15% while it was more than 50% with my previous settings)


In particular, this combo becomes a light and very efficient solution for a use with the family.

Questions about the interface, which are probably trivial. I have no experience of JS programming, but I have a good experience of programming and can put some energy with a minimal help for starting :

- would it be difficult to implement a « ring button » in order that a new visitor can send a notification to the other people who are connected but not in front of their Galene Window ? 
- would it be difficult tu implement different landing pages, for example one where we just ask for a pseudo ? 


All the best,

Fabrice.

-------------------------
Fabrice Rouillier
fabrice@rouillier.fr

Bureau virtuel : http://visio-fabrice.rouillier.fr 




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Galene] Re: Galene & Raspberry
  2022-04-27  5:01 [Galene] Galene & Raspberry Fabrice Rouillier
@ 2022-04-27 12:10 ` Juliusz Chroboczek
  2022-04-27 18:37   ` Fabrice Rouillier
  2022-04-28 16:11 ` Juliusz Chroboczek
  1 sibling, 1 reply; 8+ messages in thread
From: Juliusz Chroboczek @ 2022-04-27 12:10 UTC (permalink / raw)
  To: Fabrice Rouillier; +Cc: galene

> In particular, compared with the situation with a 32 bit OS and a default configuration for the wireless : 
> 
> - the clients connect much more quickly
> - the charge of the RPI stays very low (with 4 people connected the
>   change of each core did stay below 15% while it was more than 50% with
>   my previous settings)

That's interesting -- perhaps I should do some profiling on 32-bit ARM to
see where the inefficiency comes from.

> In particular, this combo becomes a light and very efficient solution
> for a use with the family.

Please tell your family that Galene's author said hi !

> - would it be difficult to implement a « ring button » in order that
>   a new visitor can send a notification to the other people who are
>   connected but not in front of their Galene Window ?

1. Add the button in galene.html and style it in galene.css.

2. In galene.js, add a callback that sends a broadcast user message:

    mybutton.onclick = e => {
        serverConnection.userMessage('ring', nil);
    };

3. In onUserMessage, add a handler for the new message:

    case 'ring': {
        let audio = new Audio('ring.mp3');
        audio.play();
        break;
    }


> - would it be difficult tu implement different landing pages, for
>   example one where we just ask for a pseudo ?

You have two solutions.  The quick and dirty one would be to edit the div
with class "login-container" in galene.html.  If you need to supply
passwords or change the username, you may do that in the function
'gotConnected' in galene.js.

The alternative would be to write your own login server that computes
a JWT token and redirects to Galene.  The advantage is that you can write
the server in any language you wish, but it's a little more complicated.
See the section 'Authentication Portal' of the file README.PROTOCOL.

-- Juliusz

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Galene] Re: Galene & Raspberry
  2022-04-27 12:10 ` [Galene] " Juliusz Chroboczek
@ 2022-04-27 18:37   ` Fabrice Rouillier
  2022-04-28  9:56     ` Juliusz Chroboczek
  0 siblings, 1 reply; 8+ messages in thread
From: Fabrice Rouillier @ 2022-04-27 18:37 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: galene

BTW : I have installed Galene at Inria Paris for some conferences cycle, first test was today with around 40 people + one conference room equipped with audio speakers and ambiant micros, our first true « hybrid » conference. I did couple this with a streaming with OBS installed in a virtual machine with a VNC access (so th only need for the operator is to have an internet connection to launch OBS which is pre-configured, only one button to press)

The result was highly convincing : a total of 12 processor threads (8 for OBS, 4 for Galene)  used by 2 Linux virtual machines.

> That's interesting -- perhaps I should do some profiling on 32-bit ARM to
> see where the inefficiency comes from.
> 

I suspect this is a sum of things.
A  part is due to the use of the 64 bit linux kernel itself. 50% more powerful for php for example.
Another part is probably due to the disabling of the wifi (at least for the impression when connecting)
Probably also the version of go plays some role

>> In particular, this combo becomes a light and very efficient solution
>> for a use with the family.
> 
> Please tell your family that Galene's author said hi !
> 
Haha : I did let all the informations, they already asked me who is Juliusz :-)

>> - would it be difficult to implement a « ring button » in order that
>>  a new visitor can send a notification to the other people who are
>>  connected but not in front of their Galene Window ?
> 
> 1. Add the button in galene.html and style it in galene.css.
> 
> […]

Thanks, I will try soon.

>> - would it be difficult tu implement different landing pages, for
>>  example one where we just ask for a pseudo ?
> 
> You have two solutions.  The quick and dirty one would be to edit the div
> with class "login-container" in galene.html.  If you need to supply
> passwords or change the username, you may do that in the function
> 'gotConnected' in galene.js.
> 

I will start with the dirty way :-)

> The alternative would be to write your own login server that computes
> a JWT token and redirects to Galene.  The advantage is that you can write
> the server in any language you wish, but it's a little more complicated.
> See the section 'Authentication Portal' of the file README.PROTOCOL.
> 
Thanks again, I will try it later.

All the best,

Fabrice.

> -- Juliusz


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Galene] Re: Galene & Raspberry
  2022-04-27 18:37   ` Fabrice Rouillier
@ 2022-04-28  9:56     ` Juliusz Chroboczek
  2022-04-28 16:33       ` Fabrice Rouillier
  0 siblings, 1 reply; 8+ messages in thread
From: Juliusz Chroboczek @ 2022-04-28  9:56 UTC (permalink / raw)
  To: Fabrice Rouillier; +Cc: galene

> BTW : I have installed Galene at Inria Paris for some conferences cycle,
> first test was today with around 40 people + one conference room
> equipped with audio speakers and ambiant micros, our first true
> « hybrid » conference.

Excellent.  Could you please provide me with a link to the conference, so
I can produce it in my next activity report?

> I did couple this with a streaming with OBS installed in a virtual
> machine with a VNC access (so th only need for the operator is to have
> an internet connection to launch OBS which is pre-configured, only one
> button to press)

I see.  Hopefully we can have native support for OBS in Galene once they
implement WebRTC, but I wouldn't hold my breath, the OBS team don't seem
too interested in improving their networking stack.

>> That's interesting -- perhaps I should do some profiling on 32-bit ARM to
>> see where the inefficiency comes from.
>> 

> I suspect this is a sum of things.  A part is due to the use of the 64
> bit linux kernel itself. 50% more powerful for php for example.  Another
> part is probably due to the disabling of the wifi (at least for the
> impression when connecting) Probably also the version of go plays some
> role

Perhaps.  It could also be due to a single hotspot -- perhaps the crypto
(the RPi doesn't do AES in hardware), it could be slow I/O, or it could be
the locking implementation that is different on 64- and 32-bit.  I've got
a 32-bit ARM board lying somewhere (a Beaglebone, thanks Dave), but it
doesn't have Ethernet, so it's tricky to test.

-- Juliusz

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Galene] Re: Galene & Raspberry
  2022-04-27  5:01 [Galene] Galene & Raspberry Fabrice Rouillier
  2022-04-27 12:10 ` [Galene] " Juliusz Chroboczek
@ 2022-04-28 16:11 ` Juliusz Chroboczek
  1 sibling, 0 replies; 8+ messages in thread
From: Juliusz Chroboczek @ 2022-04-28 16:11 UTC (permalink / raw)
  To: Fabrice Rouillier; +Cc: galene

> In particular, compared with the situation with a 32 bit OS and
> a default configuration for the wireless :
> 
> - the clients connect much more quickly
> - the charge of the RPI stays very low (with 4 people connected the
>   change of each core did stay below 15% while it was more than 50% with
>   my previous settings)

I've just taken some profiles on a 32-bit ARM board (ARMv7 with NEON).
The RSA handshake is very slow (big integer multiplication appears to be
prohibitive on that arch), which would explain why it takes so long to
connect.  I'm also seeing some minor noise (on the order of 2.5% CPU time)
due to Go's emulation of 64-bit atomic operations, I should probably
switch to protecting the data with a mutex instead.

Suprisingly, I don't see much CPU time in AES encryption, so it looks like
the software implementation of AES is fairly efficient.  So I have no
explanation for the high CPU time after connection.

-- Juliusz

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Galene] Re: Galene & Raspberry
  2022-04-28  9:56     ` Juliusz Chroboczek
@ 2022-04-28 16:33       ` Fabrice Rouillier
  2022-04-28 16:48         ` Juliusz Chroboczek
  0 siblings, 1 reply; 8+ messages in thread
From: Fabrice Rouillier @ 2022-04-28 16:33 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: galene

[-- Attachment #1: Type: text/plain, Size: 1359 bytes --]


> 
> Excellent.  Could you please provide me with a link to the conference, so
> I can produce it in my next activity report?
> 
See the pdf attached. Starting from May 12 another cycle (1/2 heure de science) will use the same setup.

And the pointer for both  : https://live.paris.inria.fr/ <https://live.paris.inria.fr/>

(The page is new … so incomplete)

> I see.  Hopefully we can have native support for OBS in Galene once they
> implement WebRTC, but I wouldn't hold my breath, the OBS team don't seem
> too interested in improving their networking stack.

The current problem is that for streaming correctly the slides, I mean having a good resolution that make them readable, I need to force the 4K resolution in the embedded navigator of OBS (because the slides have the same size in the Galene window than the webcams and it there is 3 webcams + the slides are quite small) and this seems to have consequences on the frame rate which seems to fall around 15 images per second.

An alternative is to use the pip, but in that case I can not use the embedded navigator and then I can not fix the settings so that one have just to push « stream » in the next session (force to crop and select the right window, etc.). The objective is that anyone can activate the stream just pushing some button.
> 
All the best.


Fabrice

[-- Attachment #2.1: Type: text/html, Size: 2171 bytes --]

[-- Attachment #2.2: Présentation-Cycle_CIM.pdf --]
[-- Type: application/pdf, Size: 1008060 bytes --]

[-- Attachment #2.3: Type: text/html, Size: 206 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Galene] Re: Galene & Raspberry
  2022-04-28 16:33       ` Fabrice Rouillier
@ 2022-04-28 16:48         ` Juliusz Chroboczek
  2022-04-28 17:07           ` Fabrice Rouillier
  0 siblings, 1 reply; 8+ messages in thread
From: Juliusz Chroboczek @ 2022-04-28 16:48 UTC (permalink / raw)
  To: Fabrice Rouillier; +Cc: galene

> The current problem is that for streaming correctly the slides, I mean having a
> good resolution that make them readable, I need to force the 4K resolution in
> the embedded navigator of OBS (because the slides have the same size in the
> Galene window than the webcams and it there is 3 webcams + the slides are quite
> small)

By default, Galene's client uses whatever size the browser has chosen.
You may manually pick a different size by doing

  /set resolution [1024,600]

then restarting the stream.  Unfortunately, there's no way to query the
natively supported sizes of the camera, so I cannot easily present a menu.

> and this seems to have consequences on the frame rate which seems to
> fall around 15 images per second.

Yes, WebRTC will drop either the framerate or the resolution when there is
too little throughput.  If you have a good connection, you may give Galene
more throughput by picking "send: unlimited" in the side menu.

> An alternative is to use the pip, but in that case I can not use the embedded
> navigator and then I can not fix the settings so that one have just to push «
> stream » in the next session (force to crop and select the right window, etc.).
> The objective is that anyone can activate the stream just pushing some button.

Please explain, that's not clear to me.

-- Juliusz

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Galene] Re: Galene & Raspberry
  2022-04-28 16:48         ` Juliusz Chroboczek
@ 2022-04-28 17:07           ` Fabrice Rouillier
  0 siblings, 0 replies; 8+ messages in thread
From: Fabrice Rouillier @ 2022-04-28 17:07 UTC (permalink / raw)
  To: Juliusz Chroboczek; +Cc: galene

> 
> Please explain, that's not clear to me.
> 

When using the embedded navigator of OBS, I crop the slides and cameras in the navigator window.
If there are 3 webcams and one slide, they all have the same size and I need to set the resolution of the navigator window to 4K in order to have a decent resolution for the slides

When not using the embedded navigator of OBS, I can use any external navigator and capture windows using OBS.
This allows me to :
1 - use the pip to detach the slides, enlarge the pip and capture the pip window in OBS 
2 - capture the webcams by cropping the navigator window

In the first solution, it seems that the frame rate of the output of OBS (or probably the frame rate in the OBS navigator) decrease to something between 15 and 20 image per second on a virtual machine with 8 core (charge around 50%). I can not be sure for the frame rate in the navigator window since I access by VNC to the machine (the goal is to have a machine in the cloud for the streaming so that anybody can launch the stream from anywhere)

Fabrice.





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-04-28 17:07 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-27  5:01 [Galene] Galene & Raspberry Fabrice Rouillier
2022-04-27 12:10 ` [Galene] " Juliusz Chroboczek
2022-04-27 18:37   ` Fabrice Rouillier
2022-04-28  9:56     ` Juliusz Chroboczek
2022-04-28 16:33       ` Fabrice Rouillier
2022-04-28 16:48         ` Juliusz Chroboczek
2022-04-28 17:07           ` Fabrice Rouillier
2022-04-28 16:11 ` Juliusz Chroboczek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox