• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go批量转换视频为音频

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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)
}

  

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何像go语言那样优雅的组织c++项目结构【cmake】发布时间:2022-07-10
下一篇:
基于Go的websocket消息服务发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap