【问题标题】:Help with the ffmpeg帮助 ffmpeg
【发布时间】:2010-01-20 20:40:04
【问题描述】:

我现在可以读取在 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 行...

【问题讨论】:

  • 我读了所有的,但一个都不懂。我以为我做到了,但我没有。很奇怪。
  • 这是编程相关的,孩子们。将手指从关闭按钮上移开,并实际阅读问题。是的,很难……Ramses1974的英语不是很好,但这不是你懒惰的借口。

标签: vb6 cmd ffmpeg execute frame-rate


【解决方案1】:

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

  • 了解 CR、LF 和 CRLF 的区别,以及各自的 ASCII 码是什么
  • 逐个字符读入输出流,构建一个以 CR 结尾的行,然后将其解析为 time=Durration= 标记

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

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2018-12-21
    • 1970-01-01
    相关资源
    最近更新 更多