I have spent the past two days working with the uv4l driver to get WebRTC working. I eventually got everything to work with three major issues
- I could not get the transmitted quality to anything close to what I needed
- I could not get rid of the the watermark which was put over the video
- The complete CPU utilization for 640×480 was above 90% and caused issues.
Another slightly annoying issue was that I had to re-install Jessie after I found out that uv4l is currently not available for Raspbian stretch lite. I could only find the full version for Jessie, which requires at least a 8GB microSD card. And off I went to replace my 4GB microSD card.
On the positive side I installed rpi-webrtc-streamer from github and was able to look at the results in realtime right away.
Unlike uv4l, which is based off OpenWebRTC from Ericson, rpi-webrtc-streamer is based off the Native Code from www.WebRTC.org which seems to be a bit more responsive than uv4l.
Here are the steps I had to do to get things to work.
bash> # First create a home for the code bash> mkdir utils && cd utils bash> git clone https://github.com/kclyu/rpi-webrtc-streamer.git
You can find the Android App under rpi-webrtc-streamer/misc/AppRTCMobile.apk
But first lets avoid the work and go straight to installing the software.
Go to https://github.com/kclyu/rpi-webrtc-streamer-deb and download the appropriate deb-package.
bash> dpkg -i rws_xxx_armhf.deb bash> sudo systemctl start rws
Then simply point your browser at http://<IP Address>:8889/native-peerconnection/
I will be going through the setup and usage of the Android App which is part of rpi-webrtc-sstreamer in one of my next blog entries.