47 lines
924 B
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
|
|
}
|