Releases: pion/webrtc
v3.2.9
v3.2.8
v3.2.7
v3.2.6
v3.2.5
Changelog
- 7a100b9 Enable SRTP_AEAD_AES_256_GCM
- f9e0934 Update module github.com/pion/interceptor to v0.1.17
- 55b1ac0 Update module github.com/pion/dtls/v2 to v2.2.7
- ab11eed Improve SetEphemeralUDPPortRange documentation
- d1985e0 Bring back LICENSE file
- a8aa8cc Update AUTHORS.txt
- b07c7b2 Update CI configs to v0.10.9
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
Pion WebRTC v3.2.0 is now available. Pion WebRTC is a Go implementation of WebRTC. If you haven't used it before check out awesome-pion or example-webrtc-applications for what people are doing. We maintain a feature list and other helpful resources in our README.md
This release includes 260 commits from 55 authors. This release was primarily focused on providing more tools around understanding and handling network conditions. Pion wouldn't be possible without everyone involved.
New Features
Media Bandwidth Estimator
Pion now provides a Bandwidth Estimator in-tree for serving media. You now get signals about how much bandwidth is available so you can either send more or less data, giving your users the best experience possible. We currently have a implementation of Google Congestion Control. This was implemented using a generic interface so we can provide more implementations in the future.
To use this you create a cc.BandwidthEstimator
provided by pion/interceptor. This estimator then can be queried via estimator.GetTargetBitrate()
. This returned value tells you if you should raise, lower or sustain the bitrate you are currently sending.
See bandwidth-estimation-from-disk for a full example of how it can be used.
This was implemented by @mengelbart. Work on Pion's congestion control and bandwidth estimation was funded through the User-Operated Internet fund, a fund established by NLnet made possible by financial support from the PKT Community/The Network Steward and stichting Technology Commons Trust.
webrtc-stats implementation
You can now query and process metadata about your media connections. This data is presented in the standardized webrtc-stats format. These statistics give insight into the why of a WebRTC session.
You can use this to monitor how your Pion WebRTC PeerConnections are operating. Users are also finding this useful to monitor, debug and analyze other WebRTC media servers. You can quickly start up a Pion WebRTC PeerConnection and write canaries and tests against other WebRTC software.
To use this you create a stats.Interceptor
provided by pion/interceptor. This allows you to query on a per SSRC basis the status of a stream. The following is an example of query it in a loop in the OnTrack
for each stream.
peerConnection.OnTrack(func(track *webrtc.TrackRemote, receiver *webrtc.RTPReceiver) {
fmt.Printf("New incoming track with codec: %s\n", track.Codec().MimeType)
for {
// Pull the stats for the stream that caused OnTrack to be fired
stats := statsGetter.Get(uint32(track.SSRC()))
// Print InboundRTPStreamStats. Other stats are available as well
fmt.Println(stats.InboundRTPStreamStats)
time.Sleep(time.Second * 5)
}
})
See stats for a full example of how it can be used.
This was implemented by @mengelbart
Simulcast Sender
You are now able to send Simulcast traffic with Pion WebRTC. Before this commit we were only able to receive Simulcast traffic.
Developer are using this to move Simulcast traffic between their servers as they scale out. It has also been useful for testing WebRTC servers. Using a small Pion process you can assert that your servers are properly handling Simulcast traffic.
This was implemented in 37e16a3 by @boks1971
AV1 Support
Pion WebRTC now has AV1 support. You can send AV1 with the same APIs you send and receive H264, H265, VP8, VP9, Opus and PCM with.
A example of saving AV1 to disk is available at save-to-disk-av1
Extensive Tooling Improvements
@stv0g and @at-wat made extensive improvements to the .goassets repo. Tools and processes had fallen out of date and were slowing the project down. They took on a lot of frustrating work so Pion can be stable and defect free.