Peerconnection_explainer - PeerConnection-Explainer parses WebRTC Offers/Answers then provides summaries and suggestions


PeerConnection Explainer

PeerConnection Explainer decodes WebRTC... so you don't have too!

PeerConnection_Explainer Slack Widget
GoDoc Coverage Status Go Report Card License: MIT


PeerConnection Explainer parses WebRTC Offers/Answers then provides summaries and suggestions. It returns information like what what codecs are supported, what header extensions are enabled and how many tracks each peer is attempting to send. It also provides suggestions to fix common errors.

It was designed to make learning and debugging of WebRTC easier.

Features

  • Session Description Parsing - Human readable JSON output explaining the provided Offer/Answer
  • Session Description Suggestions - Before debugging try PE first! Searches for errors and possible improvements.
  • Made for Learning - Returns line numbers for suggestion and parsing.
  • WASM -- Can be run in browser and most programming languages.

Planned Features

  • getStats Parsing
  • getStats Suggestions
  • getStats Graphing

Schema

  • DataChannel enabled?
  • How many tracks wish to be sent?
  • How many tracks are able to be received?
  • Audio+Video Codecs
    • Are they all the same for each MediaSection?
  • DTLS Fingerprint
    • At Media or Global?
    • Are they all the same?
  • ICE ufrag+pwd
    • At Media or Global?
    • Are they all the same?
Owner
Pion
The Open Source, Cross Platform Stack for Real-time Media and Data Communication.
Pion
Comments
  • Should I/O be Serialized, or should we accept text/base64/etc.. and parse?

    Should I/O be Serialized, or should we accept text/base64/etc.. and parse?

    It might be nice to have an API that accepts anything and does heuristics. If that fails it will return an error.

    That could be frustrating for users that already have a SessionDescription/JSON though? We could provide two APIs (one for JSON/one for text?)

  • Update module github.com/stretchr/testify to v1.7.1

    Update module github.com/stretchr/testify to v1.7.1

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/stretchr/testify | require | patch | v1.7.0 -> v1.7.1 |


    Release Notes

    stretchr/testify

    v1.7.1

    Compare Source


    Configuration

    πŸ“… Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled due to failing status checks.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • Update actions/checkout action to v3

    Update actions/checkout action to v3

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/checkout | action | major | v2 -> v3 |


    Release Notes

    actions/checkout

    v3

    Compare Source


    Configuration

    πŸ“… Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • Reduce build size

    Reduce build size

    tinygo build -o wasm.wasm -target wasm  -size full github.com/pion/explainer/pkg/wasm/
       code  rodata    data     bss |   flash     ram | package
    ------------------------------- | --------------- | -------
      26786       0    7750   81310 |   34536   89060 | (unknown)
          8       0       0       0 |       8       0 | /home/sean/go/src/github.com/tinygo/tinygo/lib/wasi-libc/libc-top-half/musl/src/exit
       1938       0       0       0 |    1938       0 | /home/sean/go/src/github.com/tinygo/tinygo/lib/wasi-libc/libc-top-half/musl/src/string
       3282       0       0       0 |    3282       0 | bufio
         13       0       0       0 |      13       0 | bytes
       3246       0       0       0 |    3246       0 | encoding/base64
         60       0       0       0 |      60       0 | encoding/binary
        429       0       0       0 |     429       0 | errors
       3093       0       0       0 |    3093       0 | github.com/CosmWasm/tinyjson/buffer
      23307       0       8       0 |   23315       8 | github.com/CosmWasm/tinyjson/jlexer
       1759       0     256       0 |    2015     256 | github.com/CosmWasm/tinyjson/jwriter
       3189       0       0       0 |    3189       0 | github.com/pion/explainer
       9958       0       0       0 |    9958       0 | github.com/pion/explainer/internal/sdp
         87       0       0       0 |      87       0 | internal/bytealg
       1291       0       0       4 |    1291       4 | internal/task
       2109       0       0  500000 |    2109  500000 | main
         33       0       0       0 |      33       0 | os
      11186       0       0       0 |   11186       0 | reflect
      11600       0      12     156 |   11612     168 | runtime
       8118       0       0       0 |    8118       0 | strconv
        254       0       0       0 |     254       0 | strings
        812       0       0       0 |     812       0 | sync
      11789       0       0      40 |   11789      40 | syscall/js
        181       0       0       0 |     181       0 | time
         30       0       0       0 |      30       0 | unicode/utf16
        732       0     288       0 |    1020     288 | unicode/utf8
    ------------------------------- | --------------- | -------
     125290       0    8314  581510 |  133604  589824 | total
    

    We should see if we can drop the github.com/CosmWasm/tinyjson/jlexer dependency. We are adding 35Kb just for that. I think it would be fine to just have code that walks the entire string and extracts sdp+type.

    This is our current gzip size

    tinygo build -o wasm.wasm -target wasm  -no-debug --panic trap github.com/pion/explainer/pkg/wasm
    
     gzip -9 < wasm.wasm | wc -c
    34059
    
  • Return errors with context

    Return errors with context

    We should return line numbers if possible for every warning/error/suggestion.

    When we build a SDP Explorer it would allow people to highlight a field and it could tell people exactly what it means.

  • Update module go to 1.19 - autoclosed

    Update module go to 1.19 - autoclosed

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | go (source) | golang | minor | 1.15 -> 1.19 |


    Release Notes

    golang/go

    v1.19.2

    v1.19.1

    v1.19.0

    v1.18.7

    v1.18.6

    v1.18.5

    v1.18.4

    v1.18.3

    v1.18.2

    v1.18.1

    v1.18.0

    v1.17.13

    v1.17.12

    v1.17.11

    v1.17.10

    v1.17.9

    v1.17.8

    v1.17.7

    v1.17.6

    v1.17.5

    v1.17.4

    v1.17.3

    v1.17.2

    v1.17.1

    v1.17.0

    v1.16.15

    v1.16.14

    v1.16.13

    v1.16.12

    v1.16.11

    v1.16.10

    v1.16.9

    v1.16.8

    v1.16.7

    v1.16.6

    v1.16.5

    v1.16.4

    v1.16.3

    v1.16.2

    v1.16.1


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled due to failing status checks.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • Configure Renovate - autoclosed

    Configure Renovate - autoclosed

    WhiteSource Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • go.mod (gomod)

    Configuration Summary

    Based on the default config's presets, Renovate will:

    • Start dependency updates only once this onboarding PR is merged
    • Enable Renovate Dependency Dashboard creation
    • If semantic commits detected, use semantic commit type fix for dependencies and chore for all others
    • Ignore node_modules, bower_components, vendor and various test/tests directories
    • Autodetect whether to pin dependencies or maintain ranges
    • Rate limit PR creation to a maximum of two per hour
    • Limit to maximum 10 open PRs at any time
    • Group known monorepo packages together
    • Use curated list of recommended non-monorepo package groupings
    • Fix some problems with very old Maven commons versions
    • Ignore spring cloud 1.x releases
    • Ignore http4s digest-based 1.x milestones
    • Use node versioning for @types/node
    • Limit concurrent requests to reduce load on Repology servers until we can fix this properly, see issue 10133

    πŸ”‘ Would you like to change the way Renovate is upgrading your dependencies? Simply edit the renovate.json in this branch with your custom config and the list of Pull Requests in the "What to Expect" section below will be updated the next time Renovate runs.


    What to Expect

    It looks like your repository dependencies are already up-to-date and no Pull Requests will be necessary right away.


    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • Update goreleaser/goreleaser-action action to v4

    Update goreleaser/goreleaser-action action to v4

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | goreleaser/goreleaser-action | action | major | v3 -> v4 |


    Release Notes

    goreleaser/goreleaser-action

    v4

    Compare Source


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • Update module github.com/stretchr/testify to v1.8.1

    Update module github.com/stretchr/testify to v1.8.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/stretchr/testify | require | minor | v1.7.1 -> v1.8.1 |


    Release Notes

    stretchr/testify

    v1.8.1

    Compare Source

    v1.8.0

    Compare Source

    v1.7.5

    Compare Source

    v1.7.4

    Compare Source

    v1.7.3

    Compare Source

    v1.7.2

    Compare Source


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • Updated the web APP UI

    Updated the web APP UI

    Created a react version of the web explainer. Please let me know if there is anything that needs to be changed

    https://user-images.githubusercontent.com/36244069/149459967-3eb5e168-f3f6-49c9-9700-6eb804c2f31c.mov

  • Errors/Warnings/Suggestions and PeerDetails/SessionDetails definitions

    Errors/Warnings/Suggestions and PeerDetails/SessionDetails definitions

    List of all the things we can surface to users.

    Errors

    • [x] Two Offers or Two Answers were provided
    • [ ] Mismatch on Transceiver Count
    • [ ] Answerer using incorrect PayloadTypes

    Warnings

    Suggestions

    PeerDetails

    • DataChannel enabled?
      • MediaSection ID
      • MediaSection Order
    • How many tracks wish to be sent?
    • How many tracks are able to be received?
    • Audio+Video Codecs
      • Are they all the same for each MediaSection?
    • DTLS Fingerprint
      • At Media or Global?
      • Are they all the same?
    • ICE ufrag+pwd
      • At Media or Global?
      • Are they all the same?

    SessionDetails

Moviefetch: a simple program to search and download for movies from websites like 1337x and then stream them

MovieFetch Disclaimer I am NOT responisble for any legal issues or other you enc

Dec 2, 2022
A yet to be voice call application in terminal. with the power of go and webRTC (pion).

Kenny I'm just trying to make a cli operated voice call chat application using go with help of webRTC and PortAudio. It might stay a Work In Progress

Dec 2, 2022
A toy MMO example built using Ebiten and WebRTC DataChannels (UDP)
A toy MMO example built using Ebiten and WebRTC DataChannels (UDP)

Ebiten WebRTC Toy MMO ⚠️ This is a piece of incomplete hobby work and not robust. Please read the "Why does this project exist?" section. What is this

Aug 28, 2022
Pure Go implementation of the WebRTC API
Pure Go implementation of the WebRTC API

Pion WebRTC A pure Go implementation of the WebRTC API New Release Pion WebRTC v3.0.0 has been released! See the release notes to learn about new feat

Jan 1, 2023
Pure Go implementation of the WebRTC API
Pure Go implementation of the WebRTC API

Pure Go implementation of the WebRTC API

Jan 8, 2023
gRPC over WebRTC

gRPC over WebRTC Just a proof of concept, please be kind. How to Start all the things Client, create-react-app + grpc-web signaling + webrtc extension

Dec 16, 2022
Scalable WebRTC Signaling Server with ayame-like protocol.

ayu ayu is WebRTC Signaling Server with ayame-like protocol. Scalable: ayu uses Redis to store room states, so it can be used on serverless platforms

Nov 11, 2022
Example of using Pion WebRTC to play H264 + Ogg from disk

This repo demonstrates how you can use Pion WebRTC to play H264 and Ogg from disk. These same APIs can be used to pull from other sources. You can use

Sep 18, 2021
Demonstration of using Pion WebRTC with a shared socket

pion-webrtc-shared-socket This example demonstrates how Pion WebRTC can use an already listening UDP socket. On startup we listen on UDP Socket 8000.

Apr 4, 2022
WebRTC media servers stress testing tool (currently only Janus)
 WebRTC media servers stress testing tool (currently only Janus)

GHODRAT WebRTC media servers stress testing tool (currently only Janus) Architecture Janus media-server under load Deployment ghodrat # update or crea

Nov 9, 2022
This project is the eloboration of pion/webrtc.

This project is the eloboration of pion/webrtc. The idea is to make the (pion/webrtc) sfu-ws example be able to handle multiple rooms

Nov 29, 2021
Go Webrtc Signaling Server

Go Webrtc Signaling Server This package is used to listen for Remote SDP (Sessio

Sep 7, 2022
Overlay networks based on WebRTC.
Overlay networks based on WebRTC.

weron Overlay networks based on WebRTC. ⚠️ weron has not yet been audited! While we try to make weron as secure as possible, it has not yet undergone

Jan 4, 2023
A golang library about socks5, supports all socks5 commands. That Provides server and client and easy to use. Compatible with socks4 and socks4a.

socks5 This is a Golang implementation of the Socks5 protocol library. To see in this SOCKS Protocol Version 5. This library is also compatible with S

Nov 22, 2022
Tapestry is an underlying distributed object location and retrieval system (DOLR) which can be used to store and locate objects. This distributed system provides an interface for storing and retrieving key-value pairs.

Tapestry This project implements Tapestry, an underlying distributed object location and retrieval system (DOLR) which can be used to store and locate

Mar 16, 2022
httpstream provides HTTP handlers for simultaneous streaming uploads and downloads of objects, as well as persistence and a standalone server.

httpfstream httpfstream provides HTTP handlers for simultaneous streaming uploads and downloads of files, as well as persistence and a standalone serv

May 1, 2021
Go network programming framework, supports multiplexing, synchronous and asynchronous IO mode, modular design, and provides flexible custom interfaces
Go network programming framework, supports multiplexing, synchronous and asynchronous IO mode, modular design, and provides flexible custom interfaces

Go network programming framework, supports multiplexing, synchronous and asynchronous IO mode, modular design, and provides flexible custom interfaces。The key is the transport layer, application layer protocol has nothing to do

Nov 7, 2022