go批量转换视频为音频

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
")

	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]
", 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)
}

  

原文地址:https://www.cnblogs.com/brady-wang/p/13644031.html