Live video on the AT Protocol
at eli/handle-changes 47 lines 1.6 kB view raw
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}