Skip to content
Pure Go implementation of the WebRTC API
Go Other
  1. Go 99.1%
  2. Other 0.9%
Branch: master
Clone or download
Sean-Der Improve TestSRTPDrainLeak
TestSRTPDrainLeak asserts that we notify the user
of SRTP/SRTCP packets that can't be handled. Before
we tested by sending 5 packets, and looking for a log
message. If these 5 packets were lost the test would fail.

Now we send packets in a loop until they are seen.

Resolves #823
Latest commit d8b7905 Sep 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 Linter fixes Sep 11, 2019
internal Linter fixes Sep 11, 2019
pkg Linter fixes Sep 11, 2019
test-wasm Prepare for internal/ice package May 26, 2019
.codacy.yaml Mass replace pions -> pion Apr 4, 2019
.eslintrc.json Add eslintrc for codacy Aug 11, 2018
.gitignore Fix OpusWriter issues that break VLC Aug 16, 2019
.golangci.yml Lint examples directory with golangci-lint Sep 11, 2019
.travis.yml Lint examples directory with golangci-lint Sep 11, 2019
DESIGN.md Mass replace pions -> pion Apr 4, 2019
LICENSE Initial commit May 18, 2018
README.md Fix crash in mux logging Sep 8, 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
atomicbool.go Add PeerConnectionState Sep 16, 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 Implement permissive STUN URL parsing Jul 17, 2019
configuration_common.go Implement permissive STUN URL parsing Jul 17, 2019
configuration_js.go Implement permissive STUN URL parsing Jul 17, 2019
configuration_test.go Implement permissive STUN URL parsing Jul 17, 2019
constants.go Add JavaScript/WASM bindings Mar 7, 2019
datachannel.go Don't return event status if unused Sep 16, 2019
datachannel_go_test.go Fix race in TestEOF May 8, 2019
datachannel_js.go Golang1.13 updates Sep 8, 2019
datachannel_js_detach.go Create WASM covering review Jul 27, 2019
datachannel_ortc_test.go Update import paths Apr 7, 2019
datachannel_test.go Bump wrtc used for WASM testing Aug 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 Parse DTLS setup in SetRemoteDescription Aug 13, 2019
dtlsrole_test.go Parse DTLS setup in SetRemoteDescription Aug 13, 2019
dtlstransport.go Add PeerConnectionState Sep 16, 2019
dtlstransportstate.go Remove rtc prefix from filenames Feb 18, 2019
dtlstransportstate_test.go Remove rtc prefix from filenames Feb 18, 2019
errors.go Move ICE code out of internal Jun 15, 2019
go.mod Bump pion/ice Sep 13, 2019
go.sum Bump pion/ice Sep 13, 2019
ice_go.go Support running ICE lite locally and on a remote Sep 12, 2019
ice_go_test.go Add mDNS Host Candidate support Jun 21, 2019
icecandidate.go Fix ICECandidateInit ToJSON fix Aug 1, 2019
icecandidate_test.go Fix ICECandidateInit ToJSON fix Aug 1, 2019
icecandidateinit.go Move ICE code out of internal Jun 15, 2019
icecandidateinit_test.go Move ICE code out of internal Jun 15, 2019
icecandidatepair.go Basic stats Jun 25, 2019
icecandidatetype.go Basic stats Jun 25, 2019
icecandidatetype_test.go Move ICE code out of internal Jun 15, 2019
icecomponent.go Move ICE code out of internal Jun 15, 2019
icecomponent_test.go Move ICE code out of internal Jun 15, 2019
iceconnectionstate.go Move ICE code out of internal Jun 15, 2019
iceconnectionstate_test.go Move ICE code out of internal Jun 15, 2019
icecredentialtype.go Move ICE code out of internal Jun 15, 2019
icecredentialtype_test.go Move ICE code out of internal Jun 15, 2019
icegatherer.go Support running ICE lite locally and on a remote Sep 12, 2019
icegatherer_test.go Support running ICE lite locally and on a remote Sep 12, 2019
icegathererstate.go Move ICE code out of internal Jun 15, 2019
icegathererstate_test.go Move ICE code out of internal Jun 15, 2019
icegatheringstate.go Move ICE code out of internal Jun 15, 2019
icegatheringstate_test.go Move ICE code out of internal Jun 15, 2019
icegatheroptions.go Move ICE code out of internal Jun 15, 2019
iceparameters.go Move ICE code out of internal Jun 15, 2019
iceprotocol.go Move ICE code out of internal Jun 15, 2019
iceprotocol_test.go Move ICE code out of internal Jun 15, 2019
icerole.go Move ICE code out of internal Jun 15, 2019
icerole_test.go Move ICE code out of internal Jun 15, 2019
iceserver.go Move ICE code out of internal Jun 15, 2019
iceserver_js.go Move ICE code out of internal Jun 15, 2019
iceserver_test.go Move ICE code out of internal Jun 15, 2019
icetransport.go Add ICE transport and SCTP transport stats Aug 22, 2019
icetransport_test.go Mass replace pions -> pion Apr 4, 2019
icetransportpolicy.go Move ICE code out of internal Jun 15, 2019
icetransportpolicy_test.go Move ICE code out of internal Jun 15, 2019
icetransportstate.go Linter fixes Sep 11, 2019
icetransportstate_test.go Move ICE code out of internal Jun 15, 2019
js_utils.go Golang1.13 updates Sep 8, 2019
mediaengine.go Add examples/play-from-disk Aug 8, 2019
mediaengine_test.go Linter fixes Sep 11, 2019
networktype.go Enable gochecknoglobals linter Jul 9, 2019
networktype_test.go Move ICE code out of internal Jun 15, 2019
oauthcredential.go Move ICE code out of internal Jun 15, 2019
offeransweroptions.go Remove rtc prefix from filenames Feb 18, 2019
package.json Bump wrtc used for WASM testing Aug 24, 2019
peerconnection.go Make updateConnectionState idempotent Sep 16, 2019
peerconnection_close_test.go Remove no-op code from shutdown Jul 23, 2019
peerconnection_go_test.go Add test for invalid fingerprints Sep 16, 2019
peerconnection_js.go Add PeerConnectionState Sep 16, 2019
peerconnection_media_test.go Improve TestSRTPDrainLeak Sep 16, 2019
peerconnection_setlocaldescription_test.go Fix routine leak in drainSRTP Jul 6, 2019
peerconnection_test.go Add PeerConnectionState Sep 16, 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 Linter fixes Sep 11, 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 Don't error when no candidate pairs Jun 9, 2019
rtpsendparameters.go Expose Encodings variable for ORTC Feb 26, 2019
rtptransceiver.go Don't store transceiver MID Jul 23, 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 Add ICE transport and SCTP transport stats Aug 22, 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 Support running ICE lite locally and on a remote Sep 12, 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 Basic stats Jun 25, 2019
stats_go.go Basic stats Jun 25, 2019
stats_go_test.go Add ICE transport and SCTP transport stats Aug 22, 2019
track.go Set RTP MTU to 1200 to match Chromium Aug 17, 2019
track_test.go Linter fixes Sep 11, 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.

We maintain a FAQ with answers to common questions. If you have a question not covered please submit a PR, we would be happy to answer it!

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.