Live video on the AT Protocol
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}