GO调用FFMPEG小试

GO调用FFMPEG小试

Tags
Published
  • 太久没有捣鼓go了 都忘了 从头慢慢学一点
package main

import (
	"fmt"
	"log"
	"os"
	"os/exec"
	"path/filepath"
	"strings"
)

func main() {
	// 获取程序执行路径
	exePath, err := os.Executable()
	if err != nil {
		log.Fatal(err)
	}
	dirPath := filepath.Dir(exePath)

	// 遍历指定目录下的所有ogg文件
	err = filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}
		if info.IsDir() {
			return nil
		}
		if strings.ToLower(filepath.Ext(info.Name())) != ".ogg" {
			return nil
		}

		// 转换为mp3格式
		outName := strings.TrimSuffix(info.Name(), filepath.Ext(info.Name())) + ".mp3"
		cmd := exec.Command("ffmpeg", "-i", path, "-acodec", "libmp3lame", "-q:a", "2", filepath.Join(dirPath, outName))
		err = cmd.Run()
		if err != nil {
			log.Printf("Error converting %s to mp3: %v", path, err)
		} else {
			fmt.Printf("Converted %s to mp3\n", path)
		}

		return nil
	})
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println("All ogg files converted to mp3.")
}

Loading Comments...