go/ffmpeg/ffmpeg.go

47 lines
924 B
Go

package ffmpeg
import (
"fmt"
"os"
"os/exec"
"strconv"
)
const (
FFPROBE = "/usr/bin/ffprobe"
)
// Remove executes mega-rm src
func Duration(fn string) (duration float64, err error) {
// ffprobe -i "KatyDid's Channel, The JACK Show Reads Graham Nolans Chuck Dixon Tweet.mp3" -show_entries format=duration -v quiet -of csv="p=0"
//"\"" + fn + "\"",
args := []string{
"-i",
`""` + fn + `""`,
"-show_entries",
"format=duration",
"-v",
"quiet",
"-of",
"csv=\"p=0\"",
}
fmt.Println("[ffmpeg]", FFPROBE, args)
//_duration, err := exec.Command(FFPROBE, args...).Output()
cmd := exec.Command(FFPROBE, args...)
cmd.Stderr = os.Stderr
data, err := cmd.Output()
if err != nil {
fmt.Println("[ffmpeg] error[0]:", err)
fmt.Println(data)
return 0, err
}
duration, err = strconv.ParseFloat(string(data), 64)
if err != nil {
fmt.Println("[ffmpeg] error[1]:", err)
return 0, err
}
return
}