Pion WebRTC
rupy
Our great sponsors
Pion WebRTC | rupy | |
---|---|---|
84 | 31 | |
12,545 | 136 | |
2.0% | - | |
8.9 | 1.1 | |
4 days ago | about 1 year ago | |
Go | Java | |
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Pion WebRTC
- Golang WebRTC. How to use Pion šRemote Controller
-
Pure C WebRTC
I am really excited about https://github.com/sepfy/libpeer. It has examples ready for ESP32 etc....
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 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.
-
WebRTC for the Curious
Pion (https://github.com/pion/webrtc) works well and offers a good set of features.
-
Ask HN: What side projects landed you a job?
I have worked four jobs related to https://github.com/pion/webrtc and one for https://webrtcforthecurious.com
Two companies used Pion. The other two were just using the protocol (WebRTC)
- Need help with audio calls for rooms with about 10 people in each.
-
Possible frameworks/languages for a web/mobile application
In my experience Go has been relatively approachable for people that are good at PHP. It has a great standard library and a pretty solid ecosystem, though frameworks arenāt as popular in Go. There are some well regarded libraries for things like WebRTC via https://github.com/pion/webrtc WebSicket via https://github.com/nhooyr/websocket
-
Video streaming in golang
Don't try to make RTC yourself, it looks easy, but in fact, it's a really hard problem to solve. Use https://pion.ly/ it's a pretty solid package they also have a discord/slack channel with a lot of helpful people there.
-
Datachannel video streaming?
Maybe you can reuse some of this code: https://github.com/pion/webrtc/blob/master/examples/data-channels/main.go
rupy
-
Considerations for a long-running Raspberry Pi
I have been running a Raspberry 2 cluster for 10 years: http://host.rupy.se
A few weeks back the first SD card to fail got so corrupted it failed to reboot!
My key learning is use oversized cards, because then the bitcycle will wear slower!
I'm going from 32GB to 256/512/1024!
- Sandstorm: Open-source platform for self-hosting web app
-
You Want Modules, Not Microservices
I think we're all confused over the definition. Also one might understand what all the proponents are talking about better if they think about this more as a process and not some technological solution:
https://github.com/tinspin/rupy/wiki/Process
All input I have is you want your code to run on many machines, in fact you want it to run the same on all machines you need to deliver and preferably more. Vertically and horizontally at the same time, so your services only call localhost but in many separate places.
This in turn mandates a distributed database. And later you discover it has to be capable of async-to-async = no blocking ever anywhere in the whole solution.
The way I do this is I hot-deploy my applications async. to all servers in the cluster, this is what a cluster node looks like in practice (the name next to Host: is the node): http://host.rupy.se if you click "api & metrics" you'll see the services.
With this not only do you get scalability, but also redundancy and development is maintained at live coding levels.
-
I wish my web server were in the corner of my room
I have hosted my own web server both physically and codevise since 2014.
It's on a Raspberry 2 cluster:
Since 2016 i have my own database also coded from scratch:
We need to implement HTTP/1.1 with less bloat, a C non-blocking web server that can share memory between threads is probably the most interesting project for humans right now, is anyone working on that?
-
Ask HN: Free and open source distributed database written in C++ or C
I have one in Java: https://github.com/tinspin/rupy
Here is the 2000 lines of code of the entire database: http://root.rupy.se/code?path=/Root.java
And here you can try it out: http://root.rupy.se
-
Dokku ā Free Heroku Alternative
The smallest PaaS you have ever seen is one order of magnitude larger than mine: https://github.com/tinspin/rupy
And I bet you the same goes for performance, if not two!
-
Server-Sent Events: the alternative to WebSockets you should be using
Absolutely not, HTTP/1.1 is the way to make SSE fly:
https://github.com/tinspin/rupy/wiki/Comet-Stream
Old page search for "event-stream"... Comet-stream is a collection of techniques of which SSE is one. My findings are that SSE go through anti-viruses better!
I would look at my own app-server: https://github.com/tinspin/rupy
It's not the most well documented but it's the smallest implementation while still being one of the most performant so you can learn more than just SSE.
The data is here: http://fuse.rupy.se/about.html
Under Performance. Per watt the fuse/rupy platform completely crushes all competition because of 2 reasons:
- Event driven protocol design, averages at about 4 messages/player/second (means you cannot do spraying or headshots f.ex. which is another feature in my game design opinion).
- Java's memory model with atomic concurrency which needs a VM and GC (C++ copied that memory model in C++11, but it failed completely because they lack both VM and GC, but that model is still to this day the one C++ uses), you can read more about this here: https://github.com/tinspin/rupy/wiki
You can argue those points are bad arguments, but if you look at performance per watt with some consideration for developer friendlyness, I'm pretty sure in 100 years we will still be coding minimalist JavaSE on the server and vanilla C (compiled with C++ compiler) on the client.
- Jodd ā The Unbearable Lightness of Java
What are some alternatives?
mediasoup - Cutting Edge WebRTC Video Conferencing
livekit-server - Scalable, high-performance WebRTC SFU. SDKs in JavaScript, React, React Native, Flutter, Swift, Kotlin, Unity/C#, Go, Ruby and Node. [Moved to: https://github.com/livekit/livekit]
janus-gateway - Janus WebRTC Server
aiortc - WebRTC and ORTC implementation for Python using asyncio
libdatachannel - C/C++ WebRTC network library featuring Data Channels, Media Transport, and WebSockets
SIPSorcery - A WebRTC, SIP and VoIP library for C# and .NET. Designed for real-time communications apps.
v4l - Facade to the Video4Linux video capture interface.
gst - Go bindings for GStreamer (retired: currently I don't use/develop this package)
go-m3u8 - Parse and generate m3u8 playlists for Apple HTTP Live Streaming (HLS) in Golang (ported from gem https://github.com/sethdeckard/m3u8)
peerjs - Simple peer-to-peer with WebRTC.
OvenMediaEngine - OvenMediaEngine (OME) is a Sub-Second Latency Live Streaming Server with Large-Scale and High-Definition. #WebRTC #LLHLS
wrtc-to-ffmpeg - Pipe WebRTC MediaStreams to/from FFMPEG.