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.
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