getting ffmpeg and ffprobe path automatically

This commit is contained in:
frr
2018-02-01 17:08:17 +01:00
parent 983d2f1308
commit b9b0fb7a41
2 changed files with 60 additions and 12 deletions

View File

@@ -1,10 +1,50 @@
package ffmpeg package ffmpeg
import (
"os/exec"
"bytes"
"strings"
)
type Configuration struct { type Configuration struct {
FfmpegBin string FfmpegBin string
FfprobeBin string FfprobeBin string
} }
func Configure(ffmpegBin, ffprobeBin string) *Configuration { func Configure() (Configuration, error) {
return &Configuration{ffmpegBin, ffprobeBin} var outFFmpeg bytes.Buffer
var outProbe bytes.Buffer
cmdFFmpeg := exec.Command("/bin/sh", "-c", "which ffmpeg")
cmdProbe := exec.Command("/bin/sh", "-c", "which ffprobe")
cmdFFmpeg.Stdout = &outFFmpeg
cmdProbe.Stdout = &outProbe
err := cmdFFmpeg.Start()
if err != nil {
return Configuration{}, err
}
_, err = cmdFFmpeg.Process.Wait()
if err != nil {
return Configuration{}, err
}
err = cmdProbe.Start()
if err != nil {
return Configuration{}, err
}
_, err = cmdProbe.Process.Wait()
if err != nil {
return Configuration{}, err
}
ffmpeg := strings.Replace(outFFmpeg.String(), "\n", "", -1)
fprobe := strings.Replace(outProbe.String(), "\n", "", -1)
cnf := Configuration{ffmpeg, fprobe}
return cnf, nil
} }

View File

@@ -89,13 +89,19 @@ func (t Transcoder) GetCommand() string {
/*** FUNCTIONS ***/ /*** FUNCTIONS ***/
func (t *Transcoder) Initialize(inputPath string, outputPath string, configuration *ffmpeg.Configuration) (error) { func (t *Transcoder) Initialize(inputPath string, outputPath string) (error) {
configuration, err := ffmpeg.Configure()
if err != nil {
fmt.Println(err)
return err
}
if inputPath == "" { if inputPath == "" {
return errors.New("error: transcoder.Initialize -> inputPath missing") return errors.New("error: transcoder.Initialize -> inputPath missing")
} }
_, err := os.Stat(inputPath) _, err = os.Stat(inputPath)
if os.IsNotExist(err) { if os.IsNotExist(err) {
return errors.New("error: transcoder.Initialize -> input file not found") return errors.New("error: transcoder.Initialize -> input file not found")
} }
@@ -104,24 +110,26 @@ func (t *Transcoder) Initialize(inputPath string, outputPath string, configurati
cmd := exec.Command("/bin/sh", "-c", command) cmd := exec.Command("/bin/sh", "-c", command)
fmt.Println(cmd)
var out bytes.Buffer var out bytes.Buffer
cmd.Stdout = &out cmd.Stdout = &out
cmdErr := cmd.Start() err = cmd.Start()
if cmdErr != nil { if err != nil {
return cmdErr return err
} }
_, errProc := cmd.Process.Wait() _, err = cmd.Process.Wait()
if errProc != nil { if err != nil {
return errProc return err
} }
var Metadata models.Metadata var Metadata models.Metadata
if err := json.Unmarshal([]byte(out.String()), &Metadata); err != nil { if err = json.Unmarshal([]byte(out.String()), &Metadata); err != nil {
return err return err
} }
@@ -133,7 +141,7 @@ func (t *Transcoder) Initialize(inputPath string, outputPath string, configurati
t.SetInputPath(inputPath) t.SetInputPath(inputPath)
t.SetOutputPath(outputPath) t.SetOutputPath(outputPath)
t.SetMediaFile(MediaFile) t.SetMediaFile(MediaFile)
t.SetConfiguration(*configuration) t.SetConfiguration(configuration)
return nil return nil