Live video on the AT Protocol
at eli/postgres 53 lines 1.7 kB view raw
1package media 2 3import ( 4 "context" 5 "fmt" 6 "os" 7 "testing" 8 9 "github.com/pion/webrtc/v4" 10 "github.com/stretchr/testify/require" 11 "stream.place/streamplace/pkg/config" 12 "stream.place/streamplace/pkg/crypto/spkey" 13 "stream.place/streamplace/pkg/globalerror" 14 "stream.place/streamplace/pkg/replication/boring" 15 "stream.place/streamplace/pkg/rtcrec" 16) 17 18func TestRTCRecording(t *testing.T) { 19 withNoGSTLeaks(t, func() { 20 globalerror.GlobalErrors = []error{} 21 ctx := context.Background() 22 dir, err := os.MkdirTemp("", "rtcrec-test-*") 23 require.NoError(t, err) 24 defer os.RemoveAll(dir) 25 cli := &config.CLI{} 26 fs := cli.NewFlagSet("rtcrec-test") 27 err = cli.Parse(fs, []string{"--data-dir", dir, "-wide-open=true"}) 28 require.NoError(t, err) 29 mm, err := MakeMediaManager(context.Background(), cli, nil, &boring.BoringReplicator{}, nil, nil, nil) 30 require.NoError(t, err) 31 priv, pub, err := spkey.GenerateStreamKey() 32 require.NoError(t, err) 33 signer, err := spkey.KeyToSigner(priv) 34 require.NoError(t, err) 35 mediaSigner, err := MakeMediaSigner(ctx, cli, pub.DIDKey(), signer) 36 require.NoError(t, err) 37 // ctx := context.Background() 38 // mm, ms := getStaticTestMediaManager(t) 39 fd, err := os.Open(getFixture("intermittent-tracks.cbor")) 40 require.NoError(t, err) 41 defer fd.Close() 42 pc, err := rtcrec.NewReplayPeerConnection(ctx, fd) 43 require.NoError(t, err) 44 done := make(chan struct{}) 45 answer, err := mm.WebRTCIngest(ctx, &webrtc.SessionDescription{SDP: "placeholder"}, mediaSigner, pc, done) 46 require.NoError(t, err) 47 fmt.Println(answer.SDP) 48 <-done 49 for _, err := range globalerror.GlobalErrors { 50 fmt.Printf("got error, non-fatal for now: %v\n", err) 51 } 52 }) 53}