package main import ( "bytes" "fmt" "io/ioutil" "log" "os" "os/exec" "strings" ) func main() { // 读取当前目录中的所有文件和子目录 path := "E:/video" files, err := ioutil.ReadDir(path) if err != nil { panic(err) } // 获取文件,并输出它们的名字 for _, file := range files { realPath := path+"/"+file.Name() name := file.Name() nameArr := strings.Split(name,".") //fmt.Println(nameArr) ext := nameArr[len(nameArr)-1] if ext == "mp4" || ext == "flv" { fmt.Println(name) translate(realPath,name,ext ) } } } func translate(inputPath string,fileName string,ext string ){ var out bytes.Buffer fmt.Print("默认输出音频路径: d:/audio\n") outputName := strings.Replace(fileName,ext , "aac", 1) 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("...... 转换成功.......") } } 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]\n", err) return } if exist { //fmt.Printf("已经存在目录 [%v]\n", dir) } else { //fmt.Printf("不存在目录[%v]\n", dir) // 创建文件夹 err := os.Mkdir(dir, os.ModePerm) if err != nil { //fmt.Printf("创建目录失败[%v]\n", err) } else { //fmt.Printf("创建目录成功\n") } } } // 判断文件夹是否存在 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) }
请发表评论