我试图在golang中使用os / exec调用sHell命令,该命令将花费一些时间,所以我想检索reatime输出并打印处理后的输出(进度比率数字).
package main

import (
    "bufio"
    "fmt"
    "io"
    "os"
    "os/exec"
    "Strings"
)

func main() {
    cmdName := "ffmpeg -i t.webm  -acodec aac -vcodec libx264  cmd1.mp4"
    cmdArgs := Strings.Fields(cmd@R_618_8313@

    cmd := exec.Command(cmdArgs[0],cmdArgs[1:len(cmdArgs)]...)
    stdout,_ := cmd.StdoutPipe()
    cmd.Start()
    go print(stdout)
    cmd.Wait()
}

// to print the processed information when stdout gets a new line
func print(stdout io.ReadCloser) {
    r := bufio.NewReader(stdout)
    line,_,err := r.ReadLine()
    fmt.Println("line: %s err %s",line,err)
}

我希望有一个功能可以在命令打印时更新屏幕,

ffmpeg命令输出如下:

frame=  101 fps=0.0 q=28.0 size=      91kB time=00:00:04.13 bitrate= 181.2kbits/
frame=  169 fps=168 q=28.0 size=     227kB time=00:00:06.82 bitrate= 272.6kbits/
frame=  231 fps=153 q=28.0 size=     348kB time=00:00:09.31 bitrate= 306.3kbits/
frame=  282 fps=140 q=28.0 size=     499kB time=00:00:11.33 bitrate= 360.8kbits/

事实上,上面的4行是ffmpeg命令输出的最后一行,它不断变化,我想打印出来的变化,就像

18%
44%
69%
100%

我怎么能实现这个目标?