Quest for the Sigil
This is the third public release of pion-WebRTC, thanks for trying it out!
We hope you have as much fun using it and we did making it. Thank you so much to
everyone that contributed, the code and bug reports of the community are what makes it all possible.
This release adding the following features
-
Raw RTP Input
You can now supply RTP packets directly. Instead of parsing and rebuilding packets you can just forward.
This should improve performance for this use case, and will make code simpler. Implemented by Michael MacDonald -
Allow adding Trickle-ICE candidates
ICE candidates can now be added at any time, making pion-WebRTC compatible with WebRTC implementations that use trickle ICE like Chromium and FireFox. Implement by Michael MacDonald -
Implement RTCP Reception
The API now provides code to emit and handle RTCP packets, allowing you to build applications that
interact and emit RTCP packets. Implemented by Woodrow Douglass -
Transport refactor
The internals of pion-WebRTC have been completely rewritten. This allows us to move subsystems to their own packages, cleaner code and fixed bugs along the way! Soon we should be able to provide ICE, SRTP, SCTP and more libraries for general use. We also now can explore alternative APIs like ORTC. Implemented by Michiel De Backker -
Go native DTLS
We are now 100% Go, removing our last C dependency (OpenSSL) We also now are able to provide a DTLS implementation to the greater community and are really excited about all the opportunities it opens up. Implemented by Michiel De Backker and Sean DuBois -
Improve SRTP code and add auth tag checking
Fixed a bug where wrong SRTP keys were used, in some cases video would fail to decode. Also expanded the SRTP code to do tag checking
Implemented by Tobias Fridén -
Add go-fuzz support to RTCP, and discovered crash in RTP code
Implemented by Max Hawkins
We ship with the following demos you can base your application off of.
data-channels
Shows how to use DataChannels and send/receive data to your browsergstreamer-receive
Shows how to receive video and play or process it via GStreamergstreamer-send
Shows how to generate video via GStreamer and send it to your browserjanus-gateway/streaming
Shows how to use connect to a Janus streaming mountpoint and save to an ivf containerjanus-gateway/video-room
Shows how to use connect to a Janus video-room and publish videopion-to-pion
Shows to communicate between two Pion instance using DataChannels, no browser required!save-to-disk
Shows how to receive VP8 from your browser and save to an ivf containersfu
Shows how to broadcast a video to many peers, while only requiring the broadcaster to upload once
To see what features are planned in the future, please see our roadmap