package ffmpeg import ( "fmt" "os/exec" "strings" ) const ( inputFileIdentifier = "INPUT_VIDEO_FILE" ) var ( Debug = true ) func MediaInfo(path string) (string, error) { out, err := execCommand( fmt.Sprintf("-i %s", inputFileIdentifier), path) if err.Error() == "exit status 1" && strings.HasSuffix(out, "At least one output file must be specified") { err = nil } return out, err } func execCommand(cmdStr, path string) (string, error) { cmdSplit := strings.Split(cmdStr, " ") for i, s := range cmdSplit { if s == inputFileIdentifier { cmdSplit[i] = path } } cmd := exec.Command("ffmpeg", cmdSplit...) if Debug { fmt.Println("Executing:", cmd) } out, err := cmd.CombinedOutput() if err != nil { fmt.Printf("Error: %#v\n", err.Error()) return strings.TrimSuffix(string(out), "\n"), err } if Debug { fmt.Printf("Output: %s\n", string(out)) } return strings.TrimSuffix(string(out), "\n"), err }