生活随笔
收集整理的這篇文章主要介紹了
go视频提取音频
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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)
}
總結
以上是生活随笔為你收集整理的go视频提取音频的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。