Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
2.4 kB · 87 lines
Go
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788package media
import ( "bytes" "context" "math/rand" "os" "testing" "time"
"github.com/stretchr/testify/require" "golang.org/x/sync/errgroup")
func TestMP4ToMPEGTSVideoMP4Audio(t *testing.T) { withNoGSTLeaks(t, func() {
// Open input file inputFile, err := os.Open(getFixture("5sec.mp4")) require.NoError(t, err) defer inputFile.Close()
// Create buffers for output videoBuf := bytes.Buffer{} audioBuf := bytes.Buffer{}
// Split MP4 into MPEG-TS video and MP4 audio start := time.Now() err = MP4ToMPEGTSVideoMP4Audio(context.Background(), inputFile, &videoBuf, &audioBuf) require.NoError(t, err) elapsed := time.Since(start) require.Less(t, elapsed, 4*time.Second, "MP4 to MPEG-TS/MP4 conversion should take less than 4 seconds")
// Verify outputs require.Greater(t, videoBuf.Len(), 0, "Video buffer should not be empty") require.Greater(t, audioBuf.Len(), 0, "Audio buffer should not be empty")
// Join video and audio back together buf := bytes.Buffer{} start = time.Now() err = MPEGTSVideoMP4AudioToMP4(context.Background(), &videoBuf, &audioBuf, &buf) require.NoError(t, err) require.Greater(t, buf.Len(), 0, "Output buffer should not be empty") elapsed = time.Since(start) require.Less(t, elapsed, 4*time.Second, "MPEG-TS/MP4 to MP4 conversion should take less than 4 seconds") })}
func TestMPEGTSVideoMP4AudioToMP4Invalid(t *testing.T) { withNoGSTLeaks(t, func() { g, _ := errgroup.WithContext(context.Background()) for range streamplaceTestCount { g.Go(func() error { return innerTestMPEGTSVideoMP4AudioToMP4Invalid(t) }) } err := g.Wait() require.NoError(t, err) })}
func innerTestMPEGTSVideoMP4AudioToMP4Invalid(t *testing.T) error { // Join video and audio back together videoBuf := bytes.Buffer{} audioBuf := bytes.Buffer{} // Fill buffers with 1MB of random data
rng := rand.New(rand.NewSource(42)) randomData := make([]byte, 1024*1024) // 1MB _, err := rng.Read(randomData) require.NoError(t, err) _, err = videoBuf.Write(randomData) require.NoError(t, err)
randomData = make([]byte, 1024*1024) // 1MB _, err = rng.Read(randomData) require.NoError(t, err) _, err = audioBuf.Write(randomData) require.NoError(t, err)
buf := bytes.Buffer{}
err = MPEGTSVideoMP4AudioToMP4(context.Background(), &videoBuf, &audioBuf, &buf) require.Empty(t, buf.Bytes()) require.Error(t, err) return nil}