diff options
| author | James Mills <prologic@shortcircuit.net.au> | 2020-03-22 18:01:27 +1000 |
|---|---|---|
| committer | James Mills <prologic@shortcircuit.net.au> | 2020-03-22 18:01:27 +1000 |
| commit | a90739089110e9f92653792bb1f23888ad734a79 (patch) | |
| tree | cf7b364140e560d4e062607e1ec71567cf843360 /media/utils.go | |
| parent | ce3008222e924902352d697b45626aebd8980af1 (diff) | |
Add support for transcoding
Diffstat (limited to 'media/utils.go')
| -rw-r--r-- | media/utils.go | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/media/utils.go b/media/utils.go deleted file mode 100644 index b67f276..0000000 --- a/media/utils.go +++ /dev/null @@ -1,56 +0,0 @@ -package media - -import ( - "bytes" - "fmt" - "os/exec" - "time" -) - -func cmdExists(cmd string) bool { - _, err := exec.LookPath(cmd) - return err == nil -} - -func runCmd(timeout int, command string, args ...string) error { - // instantiate new command - cmd := exec.Command(command, args...) - - // get pipe to standard output - stdout, err := cmd.StdoutPipe() - if err != nil { - return fmt.Errorf("cmd.StdoutPipe() error: %w", err) - } - - // start process via command - if err := cmd.Start(); err != nil { - return fmt.Errorf("cmd.Start() error: %w", err) - } - - // setup a buffer to capture standard output - var buf bytes.Buffer - - // create a channel to capture any errors from wait - done := make(chan error) - go func() { - if _, err := buf.ReadFrom(stdout); err != nil { - panic("buf.Read(stdout) error: " + err.Error()) - } - done <- cmd.Wait() - }() - - // block on select, and switch based on actions received - select { - case <-time.After(time.Duration(timeout) * time.Second): - if err := cmd.Process.Kill(); err != nil { - return fmt.Errorf("failed to kill: %w", err) - } - return fmt.Errorf("timeout reached, process killed") - case err := <-done: - if err != nil { - close(done) - return fmt.Errorf("process done, with error: %w", err) - } - return nil - } -} |
