I was going through some of my old projects and saw one that used this webrtc library. I remember at least at the time (3-4 years ago) if you wanted a webrtc communication channel outside of the browser there were really only two options. One was from Google [1], which is used in both chrome and firefox, and the other one was this c library.
I recall it took me a week to figure out how to properly compile Google's implementation (which uses the bazel build system) as a static or dynamic library to link to. Even then, I think I couldn't get it below something like 50MB. I don't remember the exact binary size but it was so large that I either had to give up using it or give up calling my app "lightweight".
Later I learned that there was also another great implementation written in Go [2] but obviously not feasible if the rest of your project is not in Go.
AFAIK 50mb is the entire WebRTC that has a lot of browser-related stuff. If you only needed P2P connection establishment, you could take old version of libjingle from the point in time when it was a separate library.
The optimization for size is pretty hard (for me at least). Lots of cool stuff you can do. But if you are on a time crunch/trying to go to production it doesn’t happen.
These days I just default to ‘thin’ implementations like mbedtls when I know it’s gonna come up :)
When working on KVS I wasn't familiar with the embedded space at all. I saw 'heavyweight' embedded where you were running on Linux. Then you had RTOS/No OS at all. I wasn't prepared for these devices at all. If we can make WebRTC work in the embedded space I think it will really accelerate what developers are able to build!
Remotely driven cars, security cameras, robots in hospitals that bring iPads to infectious patients etc... Creative people are building amazing things. The WebRTC/video space needs to work harder and support them :)
-----
I love how diverse the WebRTC space is now. Outside of this implementation you have plenty of other options!
Kinesis Video Streams are somewhat broke . I had to use another tool.
I would connect as viewer (ConnectAsViewer) and when I disconnected often the connection would stay open. And since there's a 10 client limit, after multiple disconnections in the same couple of minutes the system thought there was 10 client and blocked new client but there was zero clients.
Edge device that is communicating with web clients on a network would be my guess. People use WebRTC (mainly the Go library though) to create Remote Desktop implementations. Ex: https://github.com/imtiyazs/webrtc-remote-desktop
Interesting, I hadn't thought of that. As a a developer about to use the Pi at the edge, I can see how this would be helpful with delivering footage from the IoT devices.
I'm not sure I understand or would use AWS as the hub though, I would probably build my own server hub.
I recall it took me a week to figure out how to properly compile Google's implementation (which uses the bazel build system) as a static or dynamic library to link to. Even then, I think I couldn't get it below something like 50MB. I don't remember the exact binary size but it was so large that I either had to give up using it or give up calling my app "lightweight".
Later I learned that there was also another great implementation written in Go [2] but obviously not feasible if the rest of your project is not in Go.
[1] https://webrtc.googlesource.com/src
[2] https://github.com/pion/webrtc