Skip to content
Pure Go implementation of the WebRTC API
Go Other
  1. Go 98.8%
  2. Other 1.2%
Branch: master
Clone or download

Latest commit

at-wat and Sean-Der Fix synchronized lint script
Lint scripts are automatically synchronized from pion/.goassets.
Please don't edit these files directly.
Latest commit f3a73ab Jun 21, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Fix synchronized lint script Jun 21, 2020
e2e Don't upcase opus when adding to SDP Mar 14, 2020
examples Add media/oggreader Jun 18, 2020
internal Make FlattenErrs result comparable Mar 23, 2020
pkg Add media/oggreader Jun 18, 2020
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 Upgrade golangci-lint to 1.19.1 Jan 12, 2020
.travis.yml Update CI configs to v0.3.1 May 6, 2020
DESIGN.md GoDoc -> pkg.go.dev Feb 12, 2020
LICENSE Initial commit May 18, 2018
README.md Early for loop continue while sdp codecType check Jun 18, 2020
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 test for OnICEGatheringStateChange Jan 30, 2020
bundlepolicy.go Remove rtc prefix from filenames Feb 18, 2019
bundlepolicy_test.go Remove rtc prefix from filenames Feb 18, 2019
certificate.go Upgrade pion/dtls to v2.0.0-rc.6 Feb 17, 2020
certificate_test.go Add tests for WASM bindings Mar 15, 2019
codecov.yml Update CI configs to v0.2.0 Mar 26, 2020
configuration.go Document that Configurations may be re-used Jun 6, 2020
configuration_common.go Copy ICEServers when creating new PeerConnection Jun 10, 2020
configuration_js.go Implement permissive STUN URL parsing Jul 17, 2019
configuration_test.go Properly sanitize STUN urls Dec 11, 2019
constants.go Only start SCTP if RemoteDescription requests May 18, 2020
datachannel.go Fix handling of Empty DataChannel messages May 13, 2020
datachannel_go_test.go Discard double close error of dtls conn Mar 24, 2020
datachannel_js.go Replace js.Value comparisons deprecated in Go 1.14 Mar 8, 2020
datachannel_js_detach.go Create WASM covering review Jul 27, 2019
datachannel_ortc_test.go Properly generate DataChannel streamId Nov 14, 2019
datachannel_test.go Discard double close error of dtls conn Mar 24, 2020
datachannelinit.go Remove RTCDataChannel priority Sep 26, 2019
datachannelmessage.go Add JavaScript/WASM bindings Mar 7, 2019
datachannelparameters.go Properly generate DataChannel streamId Nov 14, 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 Set role when actpass remote to DTLSRoleClient Jun 16, 2020
dtlsrole_test.go Expose Answering DTLSRole via SettingEngine Oct 22, 2019
dtlstransport.go Set role when actpass remote to DTLSRoleClient Jun 16, 2020
dtlstransport_test.go Discard double close error of dtls conn Mar 24, 2020
dtlstransportstate.go Various spell fixes Oct 18, 2019
dtlstransportstate_test.go Remove rtc prefix from filenames Feb 18, 2019
errors.go Support ICE values at session level Jun 10, 2020
go.mod Set role when actpass remote to DTLSRoleClient Jun 16, 2020
go.sum Set role when actpass remote to DTLSRoleClient Jun 16, 2020
ice_go.go WASM: Fallback to SDP line for candiate callback May 26, 2020
ice_go_test.go Add mDNS Host Candidate support Jun 21, 2019
icecandidate.go WASM: Fallback to SDP line for candiate callback May 26, 2020
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 Various spell fixes Oct 18, 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 Fix ICEGatherer state change callback order Mar 10, 2020
icegatherer_test.go GenerateMulticastDNSCandidates in SettingEngine Dec 8, 2019
icegathererstate.go Fix ICEGatherer state change callback order Mar 10, 2020
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 Fix misspelled error types Oct 18, 2019
iceserver_js.go Fix misspelled error types Oct 18, 2019
iceserver_test.go Fix misspelled error types Oct 18, 2019
icetransport.go Cure ICETransport gatherer agent race May 9, 2020
icetransport_test.go Only call iceGatherer.Gather once Apr 19, 2020
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_compare.go Replace js.Value comparisons deprecated in Go 1.14 Mar 8, 2020
js_compare_legacy.go Replace js.Value comparisons deprecated in Go 1.14 Mar 8, 2020
js_utils.go Replace js.Value comparisons deprecated in Go 1.14 Mar 8, 2020
mediaengine.go GetCodecsByName method; Jun 18, 2020
mediaengine_test.go Tests Jun 18, 2020
networktype.go Populate network types from config Apr 15, 2020
networktype_test.go Populate network types from config Apr 15, 2020
oauthcredential.go Move ICE code out of internal Jun 15, 2019
offeransweroptions.go Remove rtc prefix from filenames Feb 18, 2019
operations.go Simplify operations May 31, 2020
operations_test.go Simplify operations May 31, 2020
package.json Pin dependency request to 2.88.2 Jun 7, 2020
peerconnection.go Fix single track PlanB offers Jun 2, 2020
peerconnection_close_test.go Fix deadlock during ICETransport.Stop Feb 1, 2020
peerconnection_go_test.go Copy ICEServers when creating new PeerConnection Jun 10, 2020
peerconnection_js.go Implement js.Wrapper interface for PeerConnection May 27, 2020
peerconnection_js_test.go WASM: Fallback to SDP line for candiate callback May 26, 2020
peerconnection_media_test.go Fix single track PlanB offers Jun 2, 2020
peerconnection_renegotiation_test.go Simplify operations May 31, 2020
peerconnection_test.go Fix broken link to issue in comment Jun 6, 2020
peerconnectionstate.go Remove rtc prefix from filenames Feb 18, 2019
peerconnectionstate_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 TODO for #753 Apr 26, 2020
quictransport_test.go Update import paths Apr 7, 2019
renovate.json Less noisy renovate Oct 2, 2019
rtcpfeedback.go RTP codec and sdp support transport-cc Jan 8, 2020
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 Use exported errors for stopped rtp i/o May 31, 2020
rtpsender.go Use exported errors for stopped rtp i/o May 31, 2020
rtpsendparameters.go Expose Encodings variable for ORTC Feb 26, 2019
rtptransceiver.go Add RTPTransceiver.Mid() Apr 29, 2020
rtptransceiverdirection.go Remove rtc prefix from filenames Feb 18, 2019
rtptransceiverdirection_test.go Remove RTCDataChannel priority Sep 26, 2019
rtptransceiverinit.go Migrate SDP generation to Unified Plan Apr 4, 2019
sctpcapabilities.go Remove rtc prefix from filenames Feb 18, 2019
sctptransport.go Fix DataChannel open race Mar 28, 2020
sctptransport_test.go Fix DataChannel open race Mar 28, 2020
sctptransportstate.go Remove rtc prefix from filenames Feb 18, 2019
sctptransportstate_test.go Remove rtc prefix from filenames Feb 18, 2019
sdp.go Early for loop continue while sdp codecType check Jun 18, 2020
sdp_test.go Support ICE values at session level Jun 10, 2020
sdpsemantics.go Support plan-b (fallback or explicit) Apr 9, 2019
sdpsemantics_test.go Use AddTransceiverFromKind Apr 5, 2020
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 Add helpers to disable replay protection Apr 6, 2020
settingengine_js.go WASM: Port API object Apr 1, 2019
settingengine_test.go Add replay protection setting to SettingEngine Mar 29, 2020
signalingstate.go Update import paths Apr 7, 2019
signalingstate_test.go Update import paths Apr 7, 2019
stats.go Various spell fixes Oct 18, 2019
stats_go.go Basic stats Jun 25, 2019
stats_go_test.go Fix TestPeerConnection_GetStats stability Apr 7, 2020
track.go Don't allow reading from send track Jun 20, 2020
track_test.go Don't allow reading from send track Jun 20, 2020
yarn.lock Pin dependency request to 2.88.2 Jun 7, 2020

README.md

Pion WebRTC
Pion WebRTC

A pure Go implementation of the WebRTC API

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


Pion WebRTC is a pure Go implementation of WebRTC. It has zero non-Go dependencies and no 3rd party Go dependencies. It is designed to follow WebRTC API, but may deviate when required. See DESIGN.md for the guiding principals/inspirations of the project.

Usage

example applications contains code samples of common things people build with Pion WebRTC.

example-webrtc-applications contains more full featured examples that use 3rd party libraries.

awesome-pion contains projects that have used Pion, and serve as real world examples of usage.

GoDoc is an auto generated API reference. All our Public APIs are commented.

FAQ has answers to common questions. If you have a question not covered please ask in Slack we are always looking to expand it.

Now go build something awesome! 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. We also maintain a list of Big Ideas these are things we want to build but don't have a clear plan or the resources yet. If you are looking to get involved this is a great place to get started! We would also love to hear your ideas! Even if you can't implement it yourself, it could inspire others.

Community

Pion has an active community on the Slack.

Follow the Pion Twitter for project updates and important WebRTC news.

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

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.