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 globalerror.GlobalErrors = []error{}
20 ctx := context.Background()
21 dir, err := os.MkdirTemp("", "rtcrec-test-*")
22 require.NoError(t, err)
23 defer os.RemoveAll(dir)
24 cli := &config.CLI{}
25 fs := cli.NewFlagSet("rtcrec-test")
26 err = cli.Parse(fs, []string{"--data-dir", dir, "-wide-open=true"})
27 require.NoError(t, err)
28 mm, err := MakeMediaManager(context.Background(), cli, nil, &boring.BoringReplicator{}, nil, nil, nil)
29 require.NoError(t, err)
30 priv, pub, err := spkey.GenerateStreamKey()
31 require.NoError(t, err)
32 signer, err := spkey.KeyToSigner(priv)
33 require.NoError(t, err)
34 mediaSigner, err := MakeMediaSigner(ctx, cli, pub.DIDKey(), signer)
35 require.NoError(t, err)
36 // ctx := context.Background()
37 // mm, ms := getStaticTestMediaManager(t)
38 fd, err := os.Open(getFixture("intermittent-tracks.cbor"))
39 require.NoError(t, err)
40 defer fd.Close()
41 pc, err := rtcrec.NewReplayPeerConnection(ctx, fd)
42 require.NoError(t, err)
43 done := make(chan struct{})
44 answer, err := mm.WebRTCIngest(ctx, &webrtc.SessionDescription{SDP: "placeholder"}, mediaSigner, pc, done)
45 require.NoError(t, err)
46 fmt.Println(answer.SDP)
47 <-done
48 for _, err := range globalerror.GlobalErrors {
49 fmt.Printf("got error, non-fatal for now: %v\n", err)
50 }
51}