Pion WebRTC
SIPSorcery
Our great sponsors
Pion WebRTC | SIPSorcery | |
---|---|---|
67 | 1 | |
10,663 | 958 | |
1.8% | 2.4% | |
7.9 | 8.5 | |
2 days ago | 12 days ago | |
Go | C# | |
MIT License | GNU General Public License v3.0 or later |
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
-
Faster MySQL with HTTP/3
You can run all your WebRTC traffic off a single port. You use the remote 3 tuple (IP, Port, Protocol) to demux traffic.
https://github.com/pion/webrtc/tree/master/examples/ice-sing... is one example of that.
-
WebTorrent
I originally went the same route as you, and found that https://github.com/pion/webrtc is probably the best package out there for webrtc. I learned go just for it, and it paid off tenfold. Less memory, more connections, lower latency.
-
WebRTC 102: Understanding libWebrtc
The "Mediasoup" project provides a high level JavaScript/TypeScript interface to the WebRTC APIs. The core logic of this project is implemented in C++/Rust. Consider taking a look at the project if you want an easy-to-use library instead of the low-level libWebRTC APIs. A notable project to mention is the Pion/webrtc project which has a Golang implementation of the WebRTC API. Of course, we should mention the rust port WebRTC.rs. Let’s keep all the rustaceans happy too!
-
Ask HN: FFmpeg real-time desktop streaming
What latency are you trying to do? Will the professor being communicating with the students while doing this? Will the students all have the same bandwidth, or will you want multiple renditions (low, med, high quality levels)?
If you want AV1 you will not be able to use RTMP. The protocol is orphaned/deprecated, so avoid if possible!
If I was building it this is what I would do, and my reasoning.
* For capture + encoding I would use OBS. You will want to use something that is easy for users to install configure. Professors will also have lots of custom requirements when it comes to layout etc... it will be tempting to do a ffmpeg command directly, but it will fall apart quick I believe.
* To get AV1 out of OBS I would use FFMPEG output. I would have it send RTP. RTP is used to carry video in a sub-second manner. This is the same protocol that WebRTC uses. You know have AV1 + low latency.
* Then for users to watch I would use WebRTC. That will allow them to watch in their web browser. Conceptually it will be like this https://github.com/pion/webrtc/tree/master/examples/rtp-to-w... this takes the RTP packets and puts them in the browser.
Lots of great projects exist that you could use for 'RTP -> WebRTC' like https://galene.org/ and https://livekit.io/ I would suggest checking them all out!
If you have more questions/want to talk to people in the video space always happy to chat on https://pion.ly/slack :)
-
Building my first go project, looking for package/resource suggestions
For streaming video content your options would be HLS or WebRTC, maybe look into these gwuhaolin/livego and pion/webrtc.
-
WebRTC Tutorials: 36 Essential Learning Resources
WebRTC GitHub Forum --- Use your GitHub account to join WebRTC-related forums or start a discussion of your own.
-
Using WebTransport
Do you still see challenges with doing WebRTC on a server? I work on https://github.com/pion/webrtc so would love to hear what could be better :)
-
Announcing webrtc 0.5.0
We've just released version 0.5.0 of the webrtccrate. This crate is a port of a Go project called Pion. It's a complete implementation of WebRTC in Rust, allowing you to build backends for media applications.
- Golang updating the front-end with almost real-time events from the backend server
- Golang open-source contribution
SIPSorcery
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
v4l - Facade to the Video4Linux video capture interface.
libdatachannel - C/C++ WebRTC network library featuring Data Channels, Media Transport, and WebSockets
go-m3u8 - Parse and generate m3u8 playlists for Apple HTTP Live Streaming (HLS) in Golang (ported from gem https://github.com/sethdeckard/m3u8)
gst - Go bindings for GStreamer (retired: currently I don't use/develop this package)
ion - Real-Distributed RTC System by pure Go and Flutter
peerjs - Simple peer-to-peer with WebRTC
webrtc - A pure Rust implementation of WebRTC
awesome-pion - A curated list of awesome things related to Pion