How to join Jitsi Meet video conferences over the Web
If you do not already know what Jitsi Meet is, here is the official homepage. Jitsi Meet allows you to create and join video calls over the Web (even as a simple viewer). Some of its features are: encrypted by default, no account needed, invite by pretty URL https://mysite.com/myroom
Thanks to UV4L it is possible to create or join an existing room and broadcast live video and audio to all the participants or viewers in the room from a camera and a microphone connected to the Raspberry Pi. It’s also possible to automatically hear and see other participants if you have speakers and display (HDMI, touchscreen, etc…) connected to the Raspberry Pi. Of course, other participants can be other Raspberry Pi’s. The great news is that you do not need any browser installed on the Raspberry Pi to do this.
It’s necessary to install the required packages before proceeding: uv4l, uv4l-server, uv4l-webrtc, uv4l-xmpp-bridge and one video driver (e.g. uv4l-raspicam, uv4l-uvc, etc…). Please refer to these installation instructions for more details.
To start and stop streaming to a particular Jitsi Meet server (called videobridge), it’s enough to invoke the corresponding commands by means of the UV4L Streaming Server installed on the Raspberry Pi. This can be done in two ways.
The first convenient way is through a browser by using the Jitsi Meet control page available at the URL the Streaming Server itself is listening to (e.g. http://myraspberrypi:8080), from which it’s possible to specify all the mandatory informations (i.e. XMPP and/or BOSH signalling server, chat room, your username and password) required to establish a connection and to click on start/stop buttons in order to join or leave the specified room respectively.
The second way is to invoke the start/stop commands via HTTP/GET requests sent to the Streaming Server from command line. For example, to start streaming to the videobridge which is at the base of the official, free-access Jitsi Meet service at meet.jit.si, type (in one line):
curl -s 'http://raspberrypi:port/xmpp?server=meet.jit.si&port=5222&muc=conference.meet.jit.si&room=testroom&room_password=&username=tester&password=&bosh_enable=1&bosh_tls=1&bosh_server=meet.jit.si&bosh_port=443&bosh_hostname=meet.jit.si&reconnect=1&action=Start' > /dev/null
where raspberrypi will have to be replaced with the real hostname of your Raspberry Pi in your network (it can be localhost if you are executing the command from within your Raspberry Pi) and port will have to be replaced with the real port number the Streaming Server is listening to (8080 is the default). The above command will make the Raspberry Pi create or join a conference at http://meet.jit.si/testroom.
If the UV4L Streaming Server is providing HTTPS instead of HTTP, be careful to specify ‘https://[…]’ in the URL. You may also desire to add the –insecure option to curl to turn off the verification of the server’s certificate (see the curl manual for more details).
Please note the parameters in the URL that you are allowed to specify:
– server (XMPP server hostname or ip address)
– port (port the XMPP server is listening to)
– muc (multiuser chat domain)
– room (desired room you want to join or create)
– room_password (room password, if the room is protected)
– username (desired username in the chat room)
– password (password if the server is password protected)
– reconnect (try to reconnect after disconnection)
– bosh_enable (1 if you want to use BOSH signalling, 0 otherwise)
– bosh_server (usually HTTP(S) server hostname for BOSH)
– bosh_tls (1 for HTTPS, 0 otherwise)
– bosh_port (typically 443 for HTTPS, 80 for HTTP)
– bosh_hostname (connection manager hostname, typically the same as bosh_server)
– action (Start or Stop streaming)
All the above settings can be optionally specified once for all in the UV4L configuration file (except action) (see the uv4l-server manual for more details).
Similarly, to stop streaming:
curl -s 'http://raspberrypi:8080/xmpp?action=Stop' > /dev/null
If you are protecting the UV4L Streaming Server with a password, then the above URL will not work. In this case, you must specify user and password in the URL as in the below example:
curl -s 'http://user:myp4ssw0rd@raspberrypi:8080/xmpp? [etc...]'