A pure Golang implementation of the WebRTC Native API
Clone or download
Permalink
Failed to load latest commit information.
.github Allow panics in test files Sep 12, 2018
examples Add docker-compose to pion-to-pion example Oct 1, 2018
internal Implement dtls_tlscfg_fingerprint in Go Oct 13, 2018
pkg ICE: Fix reflective candidates sending Oct 6, 2018
.codacy.yaml Examples: host examples locally Sep 15, 2018
.eslintrc.json Add eslintrc for codacy Aug 11, 2018
.gitignore Change tags from a folder to a file inside gitignore Aug 12, 2018
.golangci.yml Fix GoDoc lints Aug 16, 2018
.travis.yml Remove examples directory before running tests Sep 16, 2018
CONTRIBUTING.md Docs: Improve docs Sep 17, 2018
DESIGN.md Docs: Improve docs Sep 17, 2018
LICENSE Initial commit May 18, 2018
README.md Implement dtls_tlscfg_fingerprint in Go Oct 13, 2018
errors.go Re-organize CreateDataChannel function and add limited spec compliance Sep 4, 2018
media.go Implement SampleBuilder Sep 10, 2018
mediaengine.go fix golangci linter Aug 16, 2018
rtcbundlepolicy.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcbundlepolicy_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtccertificate.go Remove panics and fix lint Sep 12, 2018
rtccertificate_test.go Run GoFmt+GoImports Aug 28, 2018
rtcconfiguration.go Add getIceServers to support easy server parsing Sep 14, 2018
rtcconfiguration_test.go Add getIceServers to support easy server parsing Sep 14, 2018
rtcdatachannel.go DataChannels: OpenChannel & OnOpen Sep 25, 2018
rtcdatachannel_test.go Revert some RTCPeerConnection changes that broke the date channels Sep 5, 2018
rtcdatachannelinit.go Re-organize CreateDataChannel function and add limited spec compliance Sep 4, 2018
rtcdatachannelstate.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcdatachannelstate_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcdtlsfingerprint.go Add fixes to the linting to pass ci testing Sep 4, 2018
rtcdtlstransport.go Add fixes to the linting to pass ci testing Sep 4, 2018
rtcdtlstransportstate.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcdtlstransportstate_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcicecandidatetype.go Add Spec compliant enum structures Sep 14, 2018
rtcicecandidatetype_test.go Add Spec compliant enum structures Sep 14, 2018
rtcicecomponent.go Add Spec compliant enum structures Sep 14, 2018
rtcicecomponent_test.go Add Spec compliant enum structures Sep 14, 2018
rtciceconnectionstate.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtciceconnectionstate_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcicecredentialtype.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcicecredentialtype_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcicegatheringstate.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcicegatheringstate_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtciceprotocol.go Add Spec compliant enum structures Sep 14, 2018
rtciceprotocol_test.go Add Spec compliant enum structures Sep 14, 2018
rtcicerole.go Add Spec compliant enum structures Sep 14, 2018
rtcicerole_test.go Add Spec compliant enum structures Sep 14, 2018
rtciceserver.go Resolve gofmt and goimports linting issues Aug 29, 2018
rtciceserver_test.go Resolve gofmt and goimports linting issues Aug 29, 2018
rtcicetransport.go Add RTCIceTransport commented out public API Sep 5, 2018
rtcicetransportpolicy.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcicetransportpolicy_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcoauthcredential.go Run GoFmt+GoImports Aug 28, 2018
rtcofferansweroptions.go Add a bunch of documentation all over the library strucutres Aug 28, 2018
rtcpeerconnection.go Fix RTCPeerConnection.Close segfault Sep 30, 2018
rtcpeerconnection_test.go Remove panics and fix lint Sep 12, 2018
rtcpeerconnectionstate.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcpeerconnectionstate_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcprioritytype.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcprioritytype_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcrtcpmuxpolicy.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcrtcpmuxpolicy_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcrtpreceiver.go Reorganize functions into different files without meaningful code change Sep 4, 2018
rtcrtpsender.go Reorganize functions into different files without meaningful code change Sep 4, 2018
rtcrtptranceiver.go Reorganize functions into different files without meaningful code change Sep 4, 2018
rtcrtptransceiverdirection.go Reorganize functions into different files without meaningful code change Sep 4, 2018
rtcrtptransceiverdirection_test.go Reorganize functions into different files without meaningful code change Sep 4, 2018
rtcsctptransport.go Add RTCSctpTransport.Transport in preparation for spec compliance Sep 5, 2018
rtcsctptransportstate.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcsctptransportstate_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcsdptype.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcsdptype_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcsessiondescription.go SessionDescription: Allow json (un)marshalling. Sep 2, 2018
rtcsessiondescription_test.go RTCSessionDescription: Fix typos, add JSON marshal tests. Sep 2, 2018
rtcsignalingstate.go Unexport RTC State, Type and Policy structures Sep 14, 2018
rtcsignalingstate_test.go Unexport RTC State, Type and Policy structures Sep 14, 2018

README.md

Pion WebRTC
Pion WebRTC

A Golang implementation of the WebRTC API


Build Status GoDoc Go Report Card Coverage Status Codacy Badge License: MIT


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

Install

Currently Pion uses CGO and OpenSSL for DTLS. We are actively working on replacing it. For now you have to make sure to install a C compliler and the OpenSSL headers for your platform:

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

  1. Install mingw-w64
  2. Install pkg-config-lite
  3. Build (or install precompiled) openssl for mingw32-w64
  4. Set PKG_CONFIG_PATH to the directory containing openssl.pc (i.e. c:\mingw64\mingw64\lib\pkgconfig)

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.

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.
  • [WIP] pions/dcnet: A package providing Golang net interfaces around Pion WebRTC data channels.

Contributing

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

License

MIT License - see LICENSE.md for full text