1 回答

TA貢獻1811條經(jīng)驗 獲得超5個贊
您可以簡單地將輸出放入bytes.Buffer變量中,如下所示:
cmd := exec.Command(
"ffmpeg",
"-y",
"-loglevel", "warning",
"-i", ConvertImage,
"-i", videoInput,
"-c:v", cv,
"-c:a", audioCodec,
"-crf", fmt.Sprintf("%d", crf),
"-map", "[v]",
"-map", "1:a?",
"-r", fmt.Sprintf("%d", Res.FrameRate),
"-strict",
"-2",
outputFile,
)
var execOut bytes.Buffer
var execErr bytes.Buffer
cmd.Stdout = &execOut
cmd.Stderr = &execErr
通過這樣做,輸出和錯誤都在相應(yīng)的緩沖區(qū)中。
現(xiàn)在,如果您想打印它們,則可以將以下代碼片段與上述代碼一起使用:
err := cmd.Run()
if err != nil {
fmt.Println("Cannot Execute cmd: ", err.Error())
}
outStr := execOut.String()
errStr := execErr.String()
if len(outStr) > 0 {
fmt.Print(outStr)
}
if len(errStr) > 0 {
fmt.Print(errStr)
}
更新:或者,如果您完全不需要 stdout 和 stderr,那么您可以將cmd.Stdout和設(shè)置cmd.Stderr為nil如下所示:
cmd.Stdout = nil
cmd.Stderr = nil
err := cmd.Run()
if err != nil {
fmt.Println("Cannot Execute cmd: ", err.Error())
}
- 1 回答
- 0 關(guān)注
- 165 瀏覽
添加回答
舉報