在Go语言中调用FFmpeg合并文件可以通过执行系统命令来实现。可以使用os/exec包来执行shell命令。下面是一个使用FFmpeg合并文件的示例代码:
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
// 输入文件列表
files := []string{"input1.mp4", "input2.mp4", "input3.mp4"}
// 输出文件名
outputFile := "output.mp4"
// 构造FFmpeg命令
ffmpegCmd := exec.Command("ffmpeg")
// 添加输入文件参数
for _, file := range files {
ffmpegCmd.Args = append(ffmpegCmd.Args, "-i", file)
}
// 添加合并参数
ffmpegCmd.Args = append(ffmpegCmd.Args, "-filter_complex", fmt.Sprintf("concat=n=%d:v=1:a=1[outv][outa]", len(files)), "-map", "[outv]", "-map", "[outa]", outputFile)
// 执行命令
err := ffmpegCmd.Run()
if err != nil {
log.Fatal(err)
}
fmt.Println("合并完成")
}
在这个示例中,我们首先定义了输入文件列表和输出文件名。然后构造了一个FFmpeg命令,并通过os/exec包创建了一个cmd对象。然后通过循环遍历输入文件列表,将每个文件添加为输入参数。最后添加了合并参数,并执行了命令。如果命令执行成功,则合并完成。
请注意,你需要确保你的系统中已经安装了FFmpeg,并且FFmpeg命令在系统的环境变量中可用。