Live video on the AT Protocol
1package media
2
3import (
4 "context"
5 "io"
6 "os"
7 "testing"
8
9 "github.com/stretchr/testify/require"
10 "stream.place/streamplace/pkg/log"
11 "stream.place/streamplace/test/remote"
12)
13
14func TestMediaDataParser(t *testing.T) {
15 withNoGSTLeaks(t, func() {
16 // Open input file
17 inputFile, err := os.Open(getFixture("sample-segment.mp4"))
18 require.NoError(t, err)
19 defer inputFile.Close()
20 bs, err := io.ReadAll(inputFile)
21 require.NoError(t, err)
22
23 ctx := log.WithDebugValue(context.Background(), map[string]map[string]int{"GStreamerFunc": {"ParseSegmentMediaData": 9}})
24 mediaData, err := ParseSegmentMediaData(ctx, bs)
25 require.NoError(t, err)
26 require.NotNil(t, mediaData)
27 require.False(t, mediaData.Video[0].BFrames, "Video should not have BFrames")
28 require.Greater(t, mediaData.Duration, int64(0), "Video duration should not be empty")
29 })
30}
31
32func TestMediaDataParserBFrames(t *testing.T) {
33 withNoGSTLeaks(t, func() {
34 inputFile, err := os.Open(remote.RemoteFixture("5ea6c4491bade0cdcad3770aa0b63b2cd7a580e233ee320d5bc2282503b26491/segment-with-bframes.mp4"))
35 require.NoError(t, err)
36 defer inputFile.Close()
37 bs, err := io.ReadAll(inputFile)
38 require.NoError(t, err)
39
40 ctx := log.WithDebugValue(context.Background(), map[string]map[string]int{"GStreamerFunc": {"ParseSegmentMediaData": 9}})
41 mediaData, err := ParseSegmentMediaData(ctx, bs)
42 require.NoError(t, err)
43 require.NotNil(t, mediaData)
44 require.True(t, mediaData.Video[0].BFrames, "Video should have BFrames")
45 require.Greater(t, mediaData.Duration, int64(0), "Video duration should not be empty")
46 })
47}