package main import ( "bytes" "fmt" "log" "os" "os/exec" "strings" ) func main() { var inputPath string var out bytes.Buffer fmt.Print("默认输出音频路径: d:/audio 请输入要转换的视频路径:") fmt.Scan(&inputPath) fmt.Println(inputPath) // 获取最后的字符串 得到名字 countSplit := strings.Split(inputPath, "\") fileName := countSplit[len(countSplit)-1] nameArr := strings.Split(fileName,".") outputName := nameArr[0]+".aac" // 输出路径 默认为c:audio fmt.Println(outputName) outPutDir := "d:/audio" mkdirOutputDir(outPutDir) outputPath := outPutDir+"/"+outputName fileExist := FileExist(outputPath) if fileExist == true { deleteFile(outputPath) } cmdArguments := []string{"-i", inputPath, outputPath} cmd := exec.Command("ffmpeg", cmdArguments...) cmd.Stdout = &out err := cmd.Run() if err != nil { log.Fatal(err) } else{ fmt.Println("...... 转换成功.......") } //fmt.Printf("command output: %q", out.String()) } func deleteFile(fileName string) { err := os.Remove(fileName) if err != nil { //fmt.Println("删除已经存在的文件 "+fileName+" 失败") } else { //fmt.Println("删除已经存在的文件 "+fileName+" 成功") } } func mkdirOutputDir(dir string) { exist, err := PathExists(dir) if err != nil { fmt.Printf("get dir error![%v] ", err) return } if exist { //fmt.Printf("已经存在目录 [%v] ", dir) } else { //fmt.Printf("不存在目录[%v] ", dir) // 创建文件夹 err := os.Mkdir(dir, os.ModePerm) if err != nil { //fmt.Printf("创建目录失败[%v] ", err) } else { //fmt.Printf("创建目录成功 ") } } } // 判断文件夹是否存在 func PathExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err } func FileExist(path string) bool { _, err := os.Lstat(path) return !os.IsNotExist(err) }