I'm developing a project in which I have a Rpi 3 with camera and UV4L working with WebRTC. What I want to do basically is streaming Rpi camera to a browser using WebRTC, even if the Rpi is connected to the internet through a mobile hotspot. Since the cellular network is not giving me a public IP, it's not possible for me to reach the streaming page. To avoid this I wanted to use an external signalling server, reachable by both peers and manage the WebRTC streaming in some way. I have seen that in the WebRTC page of UV4L you can change the signalling server but there is no option to do that from command line. Also what kind of implementation of signalling server should I provide? Thanks for any help!


First of all, every UV4L option documented in the man pages can be passed via both command line and configuration file.

If the UV4L Web Server running on the Rpi3 cannot (easily) be reached in any way from the Internet for a simple p2p, your other option is to "push" (in one direction) the audio/video streams from the Rpi3 to a Janus Gateway deployed somewhere on the internet. You can automatically do this (e.g. at system boot) by carefully following this example.

Another interesting way introduced recently is to make use of the UV4L REST API in your own application or smart script, which provides more functionalities than the older (but still supported) API used in the example above.

  • When I said WebRTC page I was meaning the WebRTC web interface, unfortunately there is no trace in documentation or command-line reference. Anyway I'll have a try with Janus, installing it on a server. – Alessandro Dionisi Apr 14 '17 at 6:07
  • If you want to try (or definitely use) Janus and UV4L and have everything setup by default with zero configuration, then flash this image on a SD card (and plug it in a second Rpi which plays the role of "server" on the Internet): linux-projects.org/rpi-videoconference-demo-os – strumpet Apr 14 '17 at 12:15

At the end, I decided to put in place a reverse SSH tunnel and forward UV4L port to the public server.

I forward the port using the following command:

ssh -o StrictHostKeyChecking=no -Nf -R *:8080:localhost:8080 -i id_rsa user@server

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.