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%
我怎么能实现这个目标?