Advertisement
Programator2

Convert mp3s to ogg vorbis recursively (ffmpeg required)

Jun 1st, 2020
1,817
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.93 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "os"
  6.     "os/exec"
  7.     "path/filepath"
  8. )
  9.  
  10. func main() {
  11.     folder := os.Args[1]
  12.  
  13.     err := filepath.Walk(folder, func(path string, info os.FileInfo, err error) error {
  14.         if err != nil {
  15.             fmt.Printf("error accessing path %q: %v\n", path, err)
  16.             return err
  17.         }
  18.         if info.IsDir() || filepath.Ext(path) != ".mp3" {
  19.             return nil
  20.         }
  21.  
  22.         const command = "ffmpeg"
  23.         var output = path[:len(path) - 3] + "ogg"
  24.         var arguments = []string{
  25.             "-i",
  26.             path,
  27.             "-vn",
  28.             "-c:a",
  29.             "libvorbis",
  30.             "-q:a",
  31.             "3",
  32.             output,
  33.         }
  34.         cmd := exec.Command(command, arguments...)
  35.         cmd.Stdout = os.Stdout
  36.         cmd.Stderr = os.Stderr
  37.         err = cmd.Run()
  38.         if err != nil {
  39.             panic(err)
  40.         }
  41.         // fmt.Printf("file %s converted to %s", path, output)
  42.         err = os.Remove(path)
  43.         if err != nil {
  44.             panic(err)
  45.         }
  46.         return nil
  47.     })
  48.     if err != nil {
  49.         fmt.Printf("error walking the path %q: %v\n", folder, err)
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement