Files
goffmpeg/ffmpeg/ffmpeg.go

47 lines
993 B
Go

package ffmpeg
import (
"bytes"
"os/exec"
"strings"
"github.com/xfrr/goffmpeg/utils"
)
// Configuration ...
type Configuration struct {
FfmpegBin string
FfprobeBin string
}
// Configure Get and set FFmpeg and FFprobe bin paths
func Configure() (Configuration, error) {
var outFFmpeg bytes.Buffer
var outProbe bytes.Buffer
execFFmpegCommand := utils.GetFFmpegExec()
execFFprobeCommand := utils.GetFFprobeExec()
cmdFFmpeg := exec.Command(execFFmpegCommand[0], execFFmpegCommand[1])
cmdProbe := exec.Command(execFFprobeCommand[0], execFFprobeCommand[1])
cmdFFmpeg.Stdout = &outFFmpeg
cmdProbe.Stdout = &outProbe
err := cmdFFmpeg.Run()
if err != nil {
return Configuration{}, err
}
err = cmdProbe.Run()
if err != nil {
return Configuration{}, err
}
ffmpeg := strings.Replace(outFFmpeg.String(), utils.LineSeparator(), "", -1)
fprobe := strings.Replace(outProbe.String(), utils.LineSeparator(), "", -1)
cnf := Configuration{ffmpeg, fprobe}
return cnf, nil
}