stecout exec ffmpeg stdout - PullRequest
       22

stecout exec ffmpeg stdout

0 голосов
/ 27 сентября 2019

Я пытался получить exec stdoutpipe от ffmpeg и записать его в другой файл.Тем не менее, он останавливается и не завершает выполнение команды.

package main

import (
    "bytes"
    "io"
    "io/ioutil"
    "log"
    "os"
    "os/exec"
)

func stdinfill(stdin io.WriteCloser) {
    fi, err := ioutil.ReadFile("music.ogg")
    if err != nil {
        log.Fatal(err)
    }
    io.Copy(stdin, bytes.NewReader(fi))
}

func main() {
    runcommand()
}

func runcommand() {

    cmd := exec.Command("ffmpeg", "-i", "pipe:0", "-f", "mp3", "pipe:1")
    stdin, err := cmd.StdinPipe()
    if err != nil {
        log.Fatal(err)
    }

    stdout, err := cmd.StdoutPipe()
    if err != nil {
        log.Fatal(err)
    }

    cmd.Stderr = os.Stderr

    err = cmd.Start()
    if err != nil {
        log.Fatal(err)
    }

    stdinfill(stdin)

    fo, err := os.Create("output.mp3")
    if err != nil {
        log.Fatal(err)
    }
    io.Copy(fo, stdout)

    defer fo.Close()

    err = cmd.Wait()
    if err != nil {
        log.Fatal(err)
    }

}

у кого-нибудь есть идеи?Он запускает ffmpeg, но просто останавливается.

1 Ответ

0 голосов
/ 28 сентября 2019

Запуск stdinfill в goroutine исправил проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...