Pion WebRTC
A Golang implementation of the WebRTC API.
See DESIGN.md for the features it offers, and future goals.
Getting Started
This project provides a Go implementation of the WebRTC API. There isn't a application that will fit all your needs, but we provide a few simple examples to show common use cases that you are free to modify and extend to your needs.
What can I build with pion-WebRTC?
pion-WebRTC is here to help you get media/text from A<->B, here are some of the cool things you could build.
- Send a video file to multiple browser in real time, perfectly synchronized movie watching.
- Send a webcam on a small device to your browser, with no additional server required
- Securely send data between two servers, without using pub/sub
- Record your webcam and do special effects server side
- Build a conferencing application that processes audio/video and make decisions off of it
Prerequisites
We still use OpenSSL for DTLS (we are actively working on replacing it) so make sure to install the OpenSSL headers for your platform before using pion-WebRTC.
Ubuntu/Debian
sudo apt-get install libssl-dev
OSX
brew install openssl
export CPATH=`brew --prefix`/opt/openssl/include
export LIBRARY_PATH=`brew --prefix`/opt/openssl/lib
go get -u github.com/pions/webrtc
Fedora
sudo yum install openssl-devel
Windows
- Install mingw-w64
- Install pkg-config-lite
- Build (or install precompiled) openssl for mingw32-w64
- Set PKG_CONFIG_PATH to the directory containing openssl.pc (i.e. c:\mingw64\mingw64\lib\pkgconfig)
Example Programs
Examples for common use cases, extend and modify to quickly get started.
- gstreamer-receive Play video and audio from your Webcam live using GStreamer
- gstreamer-send Send video generated from GStreamer to your browser
- save-to-disk Save video from your Webcam to disk
- data-channels Use DataChannels to send text between pion-WebRTC and your browser
Writing your own application
The API should match the Javascript WebRTC API, and the GoDoc is actively maintained
Roadmap
pion-WebRTC is in active development, you can find the roadmap here.
Questions/Support
Sign up for the Golang Slack and join the #pion channel for discussions and support
You can also use Pion mailing list
If you need commercial support/don't want to use public methods you can contact us at [email protected]
Contributing
See CONTRIBUTING.md
Contributors
- John Bradley - Original Author
- Michael Melvin Santry - Mascot
- Raphael Randschau - STUN
- Sean DuBois - Original Author
- backkem - SDP, Public API, Project Management
- Brendan Rius - Cleanup
Project Ideas
We are looking to support other interesting WebRTC projects, so if you have something to build please reach out! pion-WebRTC would make a great foundation for.
- Easy language bindings (Python)
- Golang SFU
- Server side processing (video effects or an MCU)
License
MIT License - see LICENSE.md for full text