octoplex/testhelpers/ffmpeg.go
2025-02-03 21:19:34 +01:00

40 lines
717 B
Go

package testhelpers
import (
"context"
"os/exec"
"syscall"
"testing"
"github.com/stretchr/testify/require"
)
// StreamFLV streams a test video to the given URL.
func StreamFLV(t *testing.T, destURL string) {
ctx, cancel := context.WithCancel(context.Background())
cmd := exec.CommandContext(
ctx,
"ffmpeg",
"-r", "30",
"-f", "lavfi",
"-i", "testsrc",
"-vf", "scale=1280:960",
"-vcodec", "libx264",
"-x264-params", "keyint=30:scenecut=0", // 1 key frame per second
"-profile:v", "baseline",
"-pix_fmt", "yuv420p",
"-f", "flv",
destURL,
)
require.NoError(t, cmd.Start())
t.Cleanup(func() {
if cmd.Process != nil {
_ = cmd.Process.Signal(syscall.SIGINT)
}
cancel()
})
}