Skip to content
Pure Go implementation of the WebRTC API
Branch: master
Clone or download
Sean-Der and Patrice Ferlet Add examples/echo
The echo example demonstrates how to have Pion
send back to the user exactly what it receives
using the same PeerConnection.

Relates to #560

Co-authored-by: Patrice Ferlet <patrice.ferlet@smile.fr>
Latest commit 77cacbb May 16, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Disallow stdlib functions that print to stdio Apr 5, 2019
examples Add examples/echo May 19, 2019
internal Mass replace pions -> pion Apr 4, 2019
pkg Bump pion/rtp and pion/srtp May 7, 2019
test-wasm Check Node.js version in go_js_wasm_exec script Mar 22, 2019
.codacy.yaml Mass replace pions -> pion Apr 4, 2019
.eslintrc.json Add eslintrc for codacy Aug 11, 2018
.gitignore Add tests for WASM bindings Mar 15, 2019
.golangci.yml CI: Enable no-inits linter Mar 21, 2019
.travis.yml Fix flaky test TestPeerConnection_Close_PreICE Apr 18, 2019
DESIGN.md Mass replace pions -> pion Apr 4, 2019
LICENSE Initial commit May 18, 2018
README.md Remove duplicate entry from examples/README.md May 17, 2019
api.go Mass replace pions -> pion Apr 4, 2019
api_js.go WASM: Port API object Apr 1, 2019
api_test.go Add tests for WASM bindings Mar 15, 2019
bundlepolicy.go Remove rtc prefix from filenames Feb 18, 2019
bundlepolicy_test.go Remove rtc prefix from filenames Feb 18, 2019
certificate.go Update import paths Apr 7, 2019
certificate_test.go Add tests for WASM bindings Mar 15, 2019
configuration.go Support plan-b (fallback or explicit) Apr 9, 2019
configuration_js.go Mass replace pions -> pion Apr 4, 2019
configuration_test.go Remove rtc prefix from filenames Feb 18, 2019
constants.go Add JavaScript/WASM bindings Mar 7, 2019
datachannel.go Fire DataChannel.onOpenHandler if already open May 13, 2019
datachannel_go_test.go Fix race in TestEOF May 8, 2019
datachannel_js.go Updated wasm DataChannel Apr 7, 2019
datachannel_js_detach.go Detach: WASM Shim Apr 1, 2019
datachannel_ortc_test.go Update import paths Apr 7, 2019
datachannel_test.go Fixed create data channel Apr 24, 2019
datachannelinit.go Remove rtc prefix from filenames Feb 18, 2019
datachannelmessage.go Add JavaScript/WASM bindings Mar 7, 2019
datachannelparameters.go Update sctp and datachannel revs Feb 18, 2019
datachannelstate.go Remove rtc prefix from filenames Feb 18, 2019
datachannelstate_test.go Remove rtc prefix from filenames Feb 18, 2019
dtlsfingerprint.go Remove rtc prefix from filenames Feb 18, 2019
dtlsparameters.go Remove rtc prefix from filenames Feb 18, 2019
dtlsrole.go Remove rtc prefix from filenames Feb 18, 2019
dtlsrole_test.go Remove rtc prefix from filenames Feb 18, 2019
dtlstransport.go Remove usage of ICETransport unexported fields May 9, 2019
dtlstransportstate.go Remove rtc prefix from filenames Feb 18, 2019
dtlstransportstate_test.go Remove rtc prefix from filenames Feb 18, 2019
errors.go Support plan-b (fallback or explicit) Apr 9, 2019
go.mod Bump pion/ice May 10, 2019
go.sum Bump pion/ice May 10, 2019
ice_go.go Removed API dependency from ice related structs May 10, 2019
icecandidate.go Bump pion/ice Apr 18, 2019
icecandidate_test.go Mass replace pions -> pion Apr 4, 2019
icecandidateinit.go API: Use ICECandidateInit in AddICECandidate Feb 21, 2019
icecandidateinit_test.go API: Use ICECandidateInit in AddICECandidate Feb 21, 2019
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 Remove rtc prefix from filenames Feb 18, 2019
icecomponent_test.go Remove rtc prefix from filenames Feb 18, 2019
iceconnectionstate.go Remove rtc prefix from filenames Feb 18, 2019
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 Removed API dependency from ice related structs May 10, 2019
icegatherer_test.go Mass replace pions -> pion Apr 4, 2019
icegathererstate.go Remove rtc prefix from filenames Feb 18, 2019
icegathererstate_test.go Remove rtc prefix from filenames Feb 18, 2019
icegatheringstate.go Remove rtc prefix from filenames Feb 18, 2019
icegatheringstate_test.go Remove rtc prefix from filenames Feb 18, 2019
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 Remove rtc prefix from filenames Feb 18, 2019
icerole.go Remove rtc prefix from filenames Feb 18, 2019
icerole_test.go Remove rtc prefix from filenames Feb 18, 2019
iceserver.go Update import paths Apr 7, 2019
iceserver_js.go Mass replace pions -> pion Apr 4, 2019
iceserver_test.go Update import paths Apr 7, 2019
icetransport.go Removed API dependency from ice related structs May 10, 2019
icetransport_test.go Mass replace pions -> pion Apr 4, 2019
icetransportpolicy.go Remove rtc prefix from filenames Feb 18, 2019
icetransportpolicy_test.go Remove rtc prefix from filenames Feb 18, 2019
icetransportstate.go Mass replace pions -> pion Apr 4, 2019
icetransportstate_test.go Mass replace pions -> pion Apr 4, 2019
js_utils.go Add ICE candidate event handlers Mar 25, 2019
mediaengine.go Update H264 Default Payload type Apr 11, 2019
mediaengine_test.go Mass replace pions -> pion Apr 4, 2019
networktype.go Add a customization to control network types Mar 13, 2019
networktype_test.go Add a customization to control network types Mar 13, 2019
oauthcredential.go Rename MacKey -> MACKey Feb 18, 2019
offeransweroptions.go Remove rtc prefix from filenames Feb 18, 2019
package.json Mass replace pions -> pion Apr 4, 2019
peerconnection.go Populate incoming Label/ID May 12, 2019
peerconnection_close_test.go Remove usage of ICETransport unexported fields May 9, 2019
peerconnection_go_test.go Allow remote Sendrecv to be used with Recvonly Apr 19, 2019
peerconnection_js.go Update import paths Apr 7, 2019
peerconnection_media_test.go Populate incoming Label/ID May 12, 2019
peerconnection_test.go Move missing codec test to media_test Apr 10, 2019
peerconnectionstate.go Remove rtc prefix from filenames Feb 18, 2019
peerconnectionstate_test.go Remove rtc prefix from filenames Feb 18, 2019
prioritytype.go Remove rtc prefix from filenames Feb 18, 2019
prioritytype_test.go Remove rtc prefix from filenames Feb 18, 2019
quicparameters.go Disable quic by default; enable with build tag Apr 5, 2019
quicrole.go Disable quic by default; enable with build tag Apr 5, 2019
quicrole_test.go Disable quic by default; enable with build tag Apr 5, 2019
quictransport.go Remove usage of ICETransport unexported fields May 9, 2019
quictransport_test.go Update import paths Apr 7, 2019
rtcpfeedback.go Add feedback support to SDP generation Mar 20, 2019
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 Remove rtc prefix from filenames Feb 18, 2019
rtpreceiveparameters.go Expose Encodings variable for ORTC Feb 26, 2019
rtpreceiver.go Bump SRTP/RTCP and update RTCP API Apr 11, 2019
rtpsender.go Bump SRTP/RTCP and update RTCP API Apr 11, 2019
rtpsendparameters.go Expose Encodings variable for ORTC Feb 26, 2019
rtptransceiver.go Migrate SDP generation to Unified Plan Apr 4, 2019
rtptransceiverdirection.go Remove rtc prefix from filenames Feb 18, 2019
rtptransceiverdirection_test.go Remove rtc prefix from filenames Feb 18, 2019
rtptransceiverinit.go Migrate SDP generation to Unified Plan Apr 4, 2019
sctpcapabilities.go Remove rtc prefix from filenames Feb 18, 2019
sctptransport.go Use sctp@v1.6.3 and datachannel@v1.4.3 May 8, 2019
sctptransportstate.go Remove rtc prefix from filenames Feb 18, 2019
sctptransportstate_test.go Remove rtc prefix from filenames Feb 18, 2019
sdpsemantics.go Support plan-b (fallback or explicit) Apr 9, 2019
sdpsemantics_test.go Support plan-b (fallback or explicit) Apr 9, 2019
sdptype.go Remove rtc prefix from filenames Feb 18, 2019
sdptype_test.go Rename MacKey -> MACKey Feb 18, 2019
sessiondescription.go Mass replace pions -> pion Apr 4, 2019
sessiondescription_test.go Rename Sdp -> SDP Feb 18, 2019
settingengine.go Bump pion/ice May 10, 2019
settingengine_js.go WASM: Port API object Apr 1, 2019
settingengine_test.go Improve build tags for Wasm Mar 22, 2019
signalingstate.go Update import paths Apr 7, 2019
signalingstate_test.go Update import paths Apr 7, 2019
stats.go Clean up stats structs / remove Stats interface Apr 21, 2019
stats_test.go Clean up stats structs / remove Stats interface Apr 21, 2019
track.go Update import paths Apr 7, 2019
track_test.go Return io.EOF when Track has no RTPSenders Mar 31, 2019
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
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 has arrived! See the release notes to learn about new features and breaking changes.

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

We are actively planning v2.1.0 and would love your feedback! Anyone can add issues, and anything that you think can empower Pion users.

Usage

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

For more full featured examples that use 3rd party libraries see our example-webrtc-applications repo.

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

Project status

Stargazers over time

Related projects

  • pion/turn: A simple extendable Golang TURN server
  • [WIP] pion/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.