Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@Sean-Der
Last active January 14, 2021 20:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sean-Der/3ccd8e76a95b7568ee97cf1fb526cbc9 to your computer and use it in GitHub Desktop.
Save Sean-Der/3ccd8e76a95b7568ee97cf1fb526cbc9 to your computer and use it in GitHub Desktop.
I know X, what does WebRTC get me?
You already have working infrastructure. You know the ins and outs of your video protocol.
Everything is working, but you feel like things could work even better. If so, this talk is for you!
This talk explores all the things WebRTC could unlock for you. There could be solutions for problems you didn't
even realize were fixable!
I spend most of my time around WebRTC. I am usually helping people use it, so very biased. I wrote
Pion WebRTC, 'WebRTC for the Curious' and worked at AWS on a C implementation for Kinesis Video Streams.
* RTMP
- Sub-second latency [0]
* Runs over UDP or TCP
* 125 ms for a keypress in Stadia. That is to send an event and for a video frame to return!
https://www.pcgamer.com/heres-how-stadias-input-lag-compares-to-native-pc-gaming/
- Mandatory Security
* DTLS and SRTP
- Network Roaming (ICE Restart)
* UDP is fire and forget vs TCP Congestion Controlled
* Switch networks without degrading
- NAT Traversal
* Two people in different networks can send video directly, no video touches your server!
* Or you can route video through your server like RTMP
- Multiplexed and bi-directional
* You can send and receive multiple streams
* You can add/remove tracks at anytime
- Send multiple quality feeds/codecs (Simulcast)
* Don't need to run expensive transcode servers!
- Binary/Text Communication
* Reliable and Ordered
* Can be Unreliable/Unordered (Gaming/Real-time)
- Supported in browser
- Is a standard
* SRT
- Supported in browser
- Multiple Implementations (These are not bindings!)
* https://github.com/pion/webrtc (Go)
* https://github.com/aiortc/aiortc (Python)
* https://github.com/webrtc-rs/webrtc (Rust)
* https://github.com/shinyoshiaki/werift-webrtc (Typescript)
* https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c (Pure C)
* https://webrtc.googlesource.com/src/ (C++)
- Negotiation needs to happen ahead of time
* I want to send 2 video streams, I support H264 and VP8
* Answerer says please send H264, I don't support VP8
* RIST
- No P2P
- Optional Security
- Multiple profiles
* H264 situation, interop issues and you need to communicate those differences
- Negotiation needs to happen ahead of time
* HLS/DASH
- Latency
- Bi-Directional
- Client buffering/performing congestion control
* WebRTC just plays out latest packet, sender is in charge of adjusting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment