1

我现在可以从 cmd 窗口中执行的 FFmpeg 过程中读取最后一行。使用脚本主机模型对象引用此源。

Private Sub Command1_Click()
    Dim oExec       As WshExec
    Dim sRow        As String

    With New WshShell
        Set oExec = .Exec("ffmpeg.exe")
    End With
    Do While oExec.Status = WshRunning
        sRow = oExec.StdOut.ReadLine
    Loop
End Sub

这条线是这样的。它是 cmd 窗口中的最后一行(在底部)。

frame= 2816 fps=667 q=11.0 Lsize= 13036kB time=187.66 bitrate= 569.1kbits/s

我削减了时间的一部分,以便在我的 vb 6.0 应用程序中构建一个进度条。但是在 cmd 进程中存在一个值 13 排列这个值,它称为总持续时间。但是我看不懂这一行,有人有代码或任何想法可以从 ffmpeg 的 cmd 窗口的最后一行向上读取 ubicated 13 行...

4

1 回答 1

0

我自己用Java完成了这个。我认为问题在于状态更新行(就像您在上面用time=子字符串引用的那样)以 CR(回车)而不是 LF(换行)终止。我的直觉说 ReadLine 正在寻找完整的 CRLF。因此,要做到这一点,您需要:

  • 了解 CR、LF 和 CRLF 之间的区别,以及各自的 ASCII 码是什么
  • 逐个字符地读入输出流,构建一个以 CR 结尾的行,然后解析它以获取time=andDurration=标记

如果您在代码中调试打印语句并向我们显示输出,这将对您和我们都有帮助。

于 2010-01-21T08:30:08.650 回答