Skip to content

Instantly share code, notes, and snippets.

View Sean-Der's full-sized avatar
🙈
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
// +build !js
package main
import (
"encoding/json"
"fmt"
"net"
"net/http"
"time"
{
"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,
# 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
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 (
"net"
"github.com/pion/rtp"
- "github.com/pion/rtp/codecs"
"github.com/pion/webrtc/v3"
@Sean-Der
Sean-Der / README.md
Last active January 28, 2021 06:56
Pion DTLS AECDH-AES128-SHA Example
  • openssl s_server -dtls -cipher "AECDH-AES128-SHA:@SECLEVEL=0" -state -accept 127.0.0.1:4444 -nocert -msg
  • openssl s_client -dtls -cipher "AECDH-AES128-SHA:@SECLEVEL=0" -state -connect 127.0.0.1:4444
-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
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.
// +build !js
package main
import (
"fmt"
"net"
"github.com/pion/rtp"
"github.com/pion/rtp/codecs"
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
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) {