??Golang?FFmpeg?????????????????????:
-
??FFmpeg:??,????FFmpeg?????????????????FFmpeg???????????????
-
??Golang????:?Golang?????????,??os/exec????FFmpeg???
-
??FFmpeg??????:??os/exec??Golang???FFmpeg?????,????????????????H.264??:
cmd := exec.Command("ffmpeg", "-i", "input.mp4", "-c:v", "libx264", "-preset", "fast", "-crf", "22", "-ss", "00:00:00", "-t", "00:00:10", "output1.mp4") err := cmd.Run() if err != nil { log.Fatal(err) }
?????????input.mp4?????output1.mp4,?00:00:00??,??10????????????,???????????????????
- ????????:????,???????????????????,?????????????????:
segmentDuration := 10 // ????,??? totalDuration := 60 // ???,??? outputPrefix := "output" // ?????? for i := 0; i < totalDuration/segmentDuration; i++ { startTime := i * segmentDuration outputFilename := fmt.Sprintf("%s%d.mp4", outputPrefix, i+1) cmd := exec.Command("ffmpeg", "-i", "input.mp4", "-c:v", "libx264", "-preset", "fast", "-crf", "22", "-ss", fmt.Sprintf("00:00:d", startTime), "-t", fmt.Sprintf("00:00:d", segmentDuration), outputFilename) err := cmd.Run() if err != nil { log.Fatal(err) } }
?????????input.mp4?????output1.mp4?output2.mp4?,???????10?,????60??
???,?????????????????,????????????????????????????,???????????????????