Skip to content

Instantly share code, notes, and snippets.

Lexi is the love of my life, I love her more then Daisy loves cheese

Sean DuBois Sean-Der

Lexi is the love of my life, I love her more then Daisy loves cheese
View GitHub Profile
View no-receiver-report.txt
"input_file": "output.ivf",
"stream_type": "video",
"avg_fps": 30.0,
"num_frames": 2109,
"avg_bitrate": 744.443,
"avg_bitrate_over_chunks": NaN,
"max_bitrate": 800.76,
"min_bitrate": 413.04,
"max_bitrate_factor": 1.076,
View webrtc-the-video-parts.txt
# WebRTC: The video bits
Quality of Service is a difficult problem in WebRTC. You spend hours perfecting
your design in the lab. You test in different network conditions and try your best.
A week later the reports trickle in of different customers having unreproducable issues.
Then when you go to research you can't even find consensus on how to solve these problems.
Most companies don’t discuss how they do it, and those that do don’t agree.
This talk is about my time building media experiences with WebRTC. The lessons I
have learned, and mistakes along the way. This talk doesn’t discuss signaling, connectivity
View gist:2e33a0940cc6cfbb45805209931e7eee
diff --git a/examples/rtp-to-webrtc/main.go b/examples/rtp-to-webrtc/main.go
index 71c3be4..e94636a 100644
--- a/examples/rtp-to-webrtc/main.go
+++ b/examples/rtp-to-webrtc/main.go
@@ -7,10 +7,8 @@ import (
- ""
Sean-Der /
Last active Jan 28, 2021
Pion DTLS AECDH-AES128-SHA Example
  • openssl s_server -dtls -cipher "AECDH-AES128-SHA:@SECLEVEL=0" -state -accept -nocert -msg
  • openssl s_client -dtls -cipher "AECDH-AES128-SHA:@SECLEVEL=0" -state -connect
View anon.patch
-type cipherSuite interface {
+type CipherSuite interface {
String() string
ID() CipherSuiteID
- certificateType() clientCertificateType
- hashFunc() func() hash.Hash
- isPSK() bool
- isInitialized() bool
+ CertificateType() ClientCertificateType
+ HashFunc() func() hash.Hash
View gist:3ccd8e76a95b7568ee97cf1fb526cbc9
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.
View main.go
// +build !js
package main
import (
View gist:a16b50dbd0207f86274ad9dd05ab4287
RTCInboundRTPVideoStream_1558728573 (inbound-rtp)
Statistics RTCInboundRTPVideoStream_1558728573
timestamp 1/11/2021, 2:24:13 PM
ssrc 1558728573
isRemote false
mediaType video
kind video
trackId RTCMediaStreamTrack_receiver_5
transportId RTCTransport_0_1
codecId RTCCodec_1_Inbound_96
View gist:23ec80b959db43efad9243b8a4ba93a9
diff --git a/pkg/nack/responder_interceptor.go b/pkg/nack/responder_interceptor.go
index f4201ab..a4f8106 100644
--- a/pkg/nack/responder_interceptor.go
+++ b/pkg/nack/responder_interceptor.go
@@ -45,6 +45,7 @@ func NewResponderInterceptor(opts ...ResponderOption) (*ResponderInterceptor, er
// BindRTCPReader lets you modify any incoming RTCP packets. It is called once per sender/receiver, however this might
// change in the future. The returned method will be called once per packet batch.
func (n *ResponderInterceptor) BindRTCPReader(reader interceptor.RTCPReader) interceptor.RTCPReader {
+ panic("test")
return interceptor.RTCPReaderFunc(func(b []byte, a interceptor.Attributes) (int, interceptor.Attributes, error) {
View gist:285839e21df22de2362ca6958eaa5d88
diff --git a/go.mod b/go.mod
index c9f03e1..be25e8c 100644
--- a/go.mod
+++ b/go.mod
@@ -2,6 +2,8 @@ module
go 1.12
+replace => /home/sean/go/src/