Pure C WebRTC
github.com
github.com
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.
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!
* https://github.com/shinyoshiaki/werift-webrtc (Typescript)
* https://github.com/pion/webrtc (Golang)
* https://github.com/webrtc-rs/webrtc (Rust)
* https://github.com/algesten/str0m (Rust)
* hhttps://github.com/sepfy/libpeer (C/Embedded)
* https://webrtc.googlesource.com/src/ (C++)
* https://github.com/sipsorcery-org/sipsorcery (C#)
* https://github.com/paullouisageneau/libdatachannel (C++)
* https://github.com/elixir-webrtc (Elixir)
* https://github.com/aiortc/aiortc (Python)
* GStreamer’s webrtcbin (C)
See https://github.com/sipsorcery/webrtc-echoes for examples of some running against each other.
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.
* Taxi uploaded footage to analyze (guns, hostile body language)
* Rescue Delivery Robot (Get a delivery robot unstuck when AI gives up. Need video + send commands)
* Remote Mining Equipment ( Video + Control)
* Remote Surgery (Specialist hands super imposed for local generalist)
* Security Cameras/Doorbells
* Kids smart watch to give parents audio+video
* Battery Operated Wearable Cameras
I'm not sure I understand or would use AWS as the hub though, I would probably build my own server hub.