Live video on the AT Protocol
79
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v0.8.2 53 lines 1.8 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 segmentsWithoutBFrames := []string{ 16 remote.RemoteFixture("d63d26050db9a60c0944b4c2e2b1d052c4350a2a8a877324c7b0b7e7a0c1ae27/bframe-false-positive.mp4"), 17 getFixture("sample-segment.mp4"), 18 } 19 withNoGSTLeaks(t, func() { 20 for _, segment := range segmentsWithoutBFrames { 21 // Open input file 22 inputFile, err := os.Open(segment) 23 require.NoError(t, err) 24 defer inputFile.Close() 25 bs, err := io.ReadAll(inputFile) 26 require.NoError(t, err) 27 28 ctx := log.WithDebugValue(context.Background(), map[string]map[string]int{"GStreamerFunc": {"ParseSegmentMediaData": 9}}) 29 mediaData, err := ParseSegmentMediaData(ctx, bs) 30 require.NoError(t, err) 31 require.NotNil(t, mediaData) 32 require.False(t, mediaData.Video[0].BFrames, "Video should not have BFrames") 33 require.Greater(t, mediaData.Duration, int64(0), "Video duration should not be empty") 34 } 35 }) 36} 37 38func TestMediaDataParserBFrames(t *testing.T) { 39 withNoGSTLeaks(t, func() { 40 inputFile, err := os.Open(remote.RemoteFixture("5ea6c4491bade0cdcad3770aa0b63b2cd7a580e233ee320d5bc2282503b26491/segment-with-bframes.mp4")) 41 require.NoError(t, err) 42 defer inputFile.Close() 43 bs, err := io.ReadAll(inputFile) 44 require.NoError(t, err) 45 46 ctx := log.WithDebugValue(context.Background(), map[string]map[string]int{"GStreamerFunc": {"ParseSegmentMediaData": 9}}) 47 mediaData, err := ParseSegmentMediaData(ctx, bs) 48 require.NoError(t, err) 49 require.NotNil(t, mediaData) 50 require.True(t, mediaData.Video[0].BFrames, "Video should have BFrames") 51 require.Greater(t, mediaData.Duration, int64(0), "Video duration should not be empty") 52 }) 53}