ffmpeg.go 942 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package ffmpeg
  2. import (
  3. "fmt"
  4. "os/exec"
  5. "strings"
  6. )
  7. const (
  8. inputFileIdentifier = "INPUT_VIDEO_FILE"
  9. )
  10. var (
  11. Debug = true
  12. )
  13. func MediaInfo(path string) (string, error) {
  14. out, err := execCommand(
  15. fmt.Sprintf("-i %s", inputFileIdentifier),
  16. path)
  17. if err.Error() == "exit status 1" && strings.HasSuffix(out, "At least one output file must be specified") {
  18. err = nil
  19. }
  20. return out, err
  21. }
  22. func execCommand(cmdStr, path string) (string, error) {
  23. cmdSplit := strings.Split(cmdStr, " ")
  24. for i, s := range cmdSplit {
  25. if s == inputFileIdentifier {
  26. cmdSplit[i] = path
  27. }
  28. }
  29. cmd := exec.Command("ffmpeg", cmdSplit...)
  30. if Debug {
  31. fmt.Println("Executing:", cmd)
  32. }
  33. out, err := cmd.CombinedOutput()
  34. if err != nil {
  35. fmt.Printf("Error: %#v\n", err.Error())
  36. return strings.TrimSuffix(string(out), "\n"), err
  37. }
  38. if Debug {
  39. fmt.Printf("Output: %s\n", string(out))
  40. }
  41. return strings.TrimSuffix(string(out), "\n"), err
  42. }