vb6 - 帮助 ffmpeg

标签 vb6 cmd ffmpeg execute frame-rate

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

最佳答案

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

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

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

    关于vb6 - 帮助 ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2104781/

    相关文章:

    vb.net - 获取 key 生成函数的反转

    sockets - 在 Windows 中如何检测哪个程序正在监听 TCP/IP 端口?

    ffmpeg - 当我使用 ffmpeg 在视频上叠加图像时,为什么输出视频的长度会增加?

    ruby-on-rails - FFMPEG,如何在我方便的时候命名输出文件?

    mysql - 当我在 Commend 提示符下输入 NETSTAT -NA 时,Windows 中 TIME_WAIT 状态的含义是什么?

    c++ - 在 Visual C++ 中使用 ffmpeg ffprobe

    java - Java 应用程序可以与 VB 应用程序集成吗?

    vb6 - 为什么 ByRef 不能与 WithEvents 结合使用?

    windows - 命令行有效 - .Bat 脚本无效

    windows - 基于多个文件名批量创建多个文件夹,并将多个相关文件移动到创建的文件夹中