parent
bb6177811b
commit
51d7b25cba
@ -0,0 +1,50 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"fmt" |
||||
"os/exec" |
||||
"time" |
||||
) |
||||
|
||||
func ffmpegGenerateMP4() { |
||||
inputPattern := "./output/img_glitched_%d.jpeg" |
||||
outputVideo := "output.mp4" |
||||
|
||||
cmd := exec.Command( |
||||
"ffmpeg", |
||||
"-y", |
||||
"-framerate", "30", |
||||
"-i", inputPattern, |
||||
"-vf", "scale=trunc(iw/2)*2:trunc(ih/2)*2,setpts=PTS*2.0", // Scale and slow down playback
|
||||
"-vcodec", "libx264", // Use H.264 codec
|
||||
"-pix_fmt", "yuv420p", |
||||
"-crf", "23", // Compression level: lower is higher quality (range: 18-28)
|
||||
"-preset", "fast", |
||||
outputVideo, |
||||
) |
||||
|
||||
done := make(chan bool) |
||||
|
||||
go func() { |
||||
err := cmd.Run() |
||||
check(err, "cannot run ffmpeg command!") |
||||
done <- true |
||||
}() |
||||
|
||||
go func() { |
||||
msg := "Generating MP4" |
||||
c := 0 |
||||
for { |
||||
select { |
||||
case <-done: |
||||
return |
||||
default: |
||||
fmt.Printf("\r%s%s", msg, dots(c)) |
||||
c = (c + 1) |
||||
time.Sleep(500 * time.Millisecond) |
||||
} |
||||
} |
||||
}() |
||||
<-done |
||||
fmt.Println("\nGIF successfully created in ./output.mp4!") |
||||
} |
Loading…
Reference in new issue