Skip to content
A Go implementation of the WebRTC API
Branch: master
Clone or download
Sean-Der Bump pions/sctp and pions/dtls
Both packages have been updated to have higher resilience to packet loss
Latest commit 7cd3d00 Mar 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
examples Rename sfu -> sfu-minimal Mar 11, 2019
internal Optimize Read by buffering Mar 13, 2019
pkg Optimize Read by buffering Mar 13, 2019
test-wasm Add tests for WASM bindings Mar 15, 2019
.codacy.yaml
.eslintrc.json
.gitignore
.golangci.yml
.travis.yml
DESIGN.md Docs: Improve docs Sep 17, 2018
LICENSE Initial commit May 18, 2018
README.md
api.go
api_test.go
bundlepolicy.go
bundlepolicy_test.go Remove rtc prefix from filenames Feb 18, 2019
certificate.go Remove rtc prefix from filenames Feb 18, 2019
certificate_test.go
configuration.go
configuration_test.go Remove rtc prefix from filenames Feb 18, 2019
constants.go Add JavaScript/WASM bindings Mar 7, 2019
datachannel.go Change public DataChannel props to methods Mar 19, 2019
datachannel_go_test.go Combine some tests for Go and Wasm Mar 19, 2019
datachannel_js.go Add tests for WASM bindings Mar 15, 2019
datachannel_ortc_test.go
datachannel_test.go Combine some tests for Go and Wasm Mar 19, 2019
datachannelinit.go Remove rtc prefix from filenames Feb 18, 2019
datachannelmessage.go Add JavaScript/WASM bindings Mar 7, 2019
datachannelparameters.go
datachannelstate.go
datachannelstate_test.go Remove rtc prefix from filenames Feb 18, 2019
dtlsfingerprint.go
dtlsparameters.go Remove rtc prefix from filenames Feb 18, 2019
dtlsrole.go
dtlsrole_test.go
dtlstransport.go Add JavaScript/WASM bindings Mar 7, 2019
dtlstransportstate.go Remove rtc prefix from filenames Feb 18, 2019
dtlstransportstate_test.go
errors.go Update golangci-lint to v14.0.0 Feb 18, 2019
go.mod Bump pions/sctp and pions/dtls Mar 20, 2019
go.sum
icecandidate.go Move pkg/ice to internal/ice Mar 1, 2019
icecandidate_test.go
icecandidateinit.go
icecandidateinit_test.go
icecandidatepair.go Add OnSelectedCandidatePairChange callback Mar 1, 2019
icecandidatetype.go Update golangci-lint to v14.0.0 Feb 18, 2019
icecandidatetype_test.go Remove rtc prefix from filenames Feb 18, 2019
icecomponent.go
icecomponent_test.go Remove rtc prefix from filenames Feb 18, 2019
iceconnectionstate.go
iceconnectionstate_test.go Remove rtc prefix from filenames Feb 18, 2019
icecredentialtype.go Remove rtc prefix from filenames Feb 18, 2019
icecredentialtype_test.go Remove rtc prefix from filenames Feb 18, 2019
icegatherer.go Add a customization to control network types Mar 13, 2019
icegatherer_test.go
icegathererstate.go
icegathererstate_test.go Remove rtc prefix from filenames Feb 18, 2019
icegatheringstate.go
icegatheringstate_test.go
icegatheroptions.go Remove rtc prefix from filenames Feb 18, 2019
iceparameters.go Remove rtc prefix from filenames Feb 18, 2019
iceprotocol.go Remove rtc prefix from filenames Feb 18, 2019
iceprotocol_test.go
icerole.go Remove rtc prefix from filenames Feb 18, 2019
icerole_test.go
iceserver.go Move pkg/ice to internal/ice Mar 1, 2019
iceserver_test.go
icetransport.go Add JavaScript/WASM bindings Mar 7, 2019
icetransportpolicy.go Remove rtc prefix from filenames Feb 18, 2019
icetransportpolicy_test.go Remove rtc prefix from filenames Feb 18, 2019
icetransportstate.go
icetransportstate_test.go Move pkg/ice to internal/ice Mar 1, 2019
js_utils.go Add JavaScript/WASM bindings Mar 7, 2019
mediaengine.go Don't allow RTP codecs that violate RFC7587 Mar 1, 2019
mediaengine_test.go Upgrade to pions/sdp v2 Feb 18, 2019
networktype.go Add a customization to control network types Mar 13, 2019
networktype_test.go
oauthcredential.go
offeransweroptions.go Remove rtc prefix from filenames Feb 18, 2019
package.json Add tests for WASM bindings Mar 15, 2019
peerconnection.go Change PC pubic properties to methods Mar 19, 2019
peerconnection_close_test.go Combine some tests for Go and Wasm Mar 19, 2019
peerconnection_go_test.go Moved the getter tests to peerconnection_go_test Mar 19, 2019
peerconnection_js.go
peerconnection_js_test.go
peerconnection_media_test.go Add tests for WASM bindings Mar 15, 2019
peerconnection_test.go
peerconnectionstate.go
peerconnectionstate_test.go Remove rtc prefix from filenames Feb 18, 2019
prioritytype.go
prioritytype_test.go
quicparameters.go
quicrole.go
quicrole_test.go Remove rtc prefix from filenames Feb 18, 2019
quictransport.go
quictransport_test.go
rtcpmuxpolicy.go Remove rtc prefix from filenames Feb 18, 2019
rtcpmuxpolicy_test.go Remove rtc prefix from filenames Feb 18, 2019
rtpcodingparameters.go Remove rtc prefix from filenames Feb 18, 2019
rtpdecodingparameters.go Remove rtc prefix from filenames Feb 18, 2019
rtpencodingparameters.go
rtpreceiveparameters.go
rtpreceiver.go
rtpsender.go
rtpsendparameters.go Expose Encodings variable for ORTC Feb 26, 2019
rtptransceiver.go Add JavaScript/WASM bindings Mar 7, 2019
rtptransceiverdirection.go
rtptransceiverdirection_test.go Remove rtc prefix from filenames Feb 18, 2019
sctpcapabilities.go
sctptransport.go
sctptransportstate.go Remove rtc prefix from filenames Feb 18, 2019
sctptransportstate_test.go
sdptype.go Remove rtc prefix from filenames Feb 18, 2019
sdptype_test.go
sessiondescription.go
sessiondescription_test.go
settingengine.go
settingengine_test.go
signalingstate.go
signalingstate_test.go Remove rtc prefix from filenames Feb 18, 2019
track.go Optimize Read by buffering Mar 13, 2019
track_test.go
yarn.lock Add tests for WASM bindings Mar 15, 2019

README.md

Pion WebRTC
Pion WebRTC

A pure Go implementation of the WebRTC API

Pion webrtc Sourcegraph Widget Slack Widget Waffle board
Build Status GoDoc Coverage Status Go Report Card Codacy Badge License: MIT


See DESIGN.md for an overview of features and future goals.

Breaking Changes

Pion WebRTC v2.0.0 is coming soon! HEAD will be unstable for the next few weeks as we prepare for the new release. See the release notes to learn about the new features breaking changes.

Have any questions? Join the Slack channel to follow development and speak with the maintainers.

Use the tag v1.2.0 if you'd like to continue using the v1.0 API in the meantime. After v2.0 is released v1.0 will be deprecated and unmaintained.

Usage

Check out the example applications to help you along your Pion WebRTC journey.

The Pion WebRTC API closely matches the JavaScript WebRTC API. Most existing documentation is therefore also usefull when working with Pion. Furthermore, our GoDoc is actively maintained.

Now go forth and build some awesome apps! Here are some ideas to get your creative juices flowing:

  • Send a video file to multiple browser in real time for perfectly synchronized movie watching.
  • Send a webcam on an embedded 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.

WebAssembly

Pion WebRTC can be used when compiled to WebAssembly, also known as Wasm. In this case the library will act as a wrapper around the JavaScript WebRTC API. This allows you to use WebRTC from Go in both server and browser side code with little to no changes. Check out the example applications for instructions on how to compile and run the WebAssembly examples. You can also visit the Wiki page on WebAssembly Development for more information.

Roadmap

The library is in active development, please refer to the roadmap to track our major milestones.

Community

Pion has an active community on the Golang Slack. Sign up and join the #pion channel for discussions and support. You can also use Pion mailing list.

We are always looking to support your projects. Please reach out if you have something to build!

If you need commercial support or don't want to use public methods you can contact us at team@pion.ly

Related projects

  • pions/turn: A simple extendable Golang TURN server
  • [WIP] pions/media-server: A Pion WebRTC powered media server, providing the building blocks for anything RTC.

Contributing

Check out the contributing wiki to join the group of amazing people making this project possible:

License

MIT License - see LICENSE for full text

You can’t perform that action at this time.