The following are a collection of example applications built by Pion users. These applications show real world usage of Pion, and should serve as a good starting point for your next project. For more minimal examples check out examples in the Pion WebRTC repository
If you have a request please make an issue, we also love contributions more examples are always welcome.
Have any questions? Join the Slack channel to follow development and speak with the maintainers.
- GoCV Receive: Example gocv-receive shows how to receive media using Pion and then do motion detection with GoCV.
- Gstreamer Receive: Example gstreamer-receive shows how to receive media from the browser and play it live. This example uses GStreamer for rendering.
- Gstreamer Send: Example gstreamer-send shows how to send video to your browser. This example uses GStreamer to process the video.
- Gstreamer Send Offer: Example gstreamer-send-offer is a variant of gstreamer-send that initiates the WebRTC connection by sending an offer.
- Janus Gateway: Example janus-gateway is a collection of examples showing how to use Pion WebRTC with janus-gateway.
- SFU Websocket: The SFU example demonstrates a conference system that uses WebSocket for signaling. It also includes a flutter client for Android, iOS and Native.
- Save to WebM: Example save-to-webm shows how to receive audio and video using Pion and then save to WebM container.
- Twitch: Example twitch shows how to send audio/video from WebRTC to https://www.twitch.tv/ via RTMP.
- C DataChannels Example c-data-channels shows how you can use Pion WebRTC from a C program
- Snapshot Example snapshot shows how you can convert incoming video frames to jpeg and serve them via HTTP.
We've made it easy to run the browser based examples on your local machine.
-
Build and run the example server:
go get github.com/pion/example-webrtc-applications cd $GOPATH/src/github.com/pion/example-webrtc-applications go run examples.go
-
Browse to localhost to browse through the examples.
Note that you can change the port of the server using the --address
flag.
Check out the contributing wiki to join the group of amazing people making this project possible:
- John Bradley - Original Author
- Raphael Randschau - STUN
- Sean DuBois - Original Author
- Michiel De Backker - SDP, Public API, Project Management
- Konstantin Itskov - SDP Parsing
- Max Hawkins - RTCP
- Justin Okamoto - Fix Docs
- leeoxiang - Implement Janus examples
- Michael MacDonald
- Woodrow Douglass RTCP, RTP improvements, G.722 support, Bugfixes
- Rob Deutsch RTPReceiver graceful shutdown
- Jin Lei - SFU example use http
- Antoine Baché - OGG Opus export
- frank - Building examples on OSX
- adwpc - SFU example with websocket
- imalic3 - SFU websocket example with datachannel broadcast
- Simonacca Fotokite
- Steve Denman
- RunningMan
- mchlrhw
- CloudWebRTC|湖北捷智云技术有限公司 - Flutter example for SFU-WS
- Atsushi Watanabe - WebM muxer example
- Jadon Bennett
- Lukas Herman - C Data Channels example
- EricSong - Implement GstV4l2Alsa example
- Tristan Matthews
- Alexey Kravtsov - GStreamer encoder tune
- Tarrence van As - Webm saver fix
- Cameron Elliott - Small race bug fix
- Jamie Good - Bug fix in jsfiddle example
- PhVHoang
- Pascal Benoit
MIT License - see LICENSE for full text