vb6 - 如何将ffmpeg转码过程信息链接到vb6 GUI应用程序中?

标签 vb6 ffmpeg progress-bar

我正在使用 ffmpeg 的 vb6 gui 前端截至目前,我所能做的就是通过 cmd.exe 调用 ffmpeg,这将在整个过程仍在运行时显示命令提示符。我认为这是 WinFF(另一个基于 pascal 的 ffmpeg 前端 GUI)如何工作的常态。

但是当我看到另一个 GVC gui which has a progress bar and everything. 时,我被震撼了

所以基本上,我正在寻找一种方法,如何干净地隐藏整个命令提示符并将转码进度链接到我的 GUI 中的进度条。

所以这是我的计划,我正在考虑找到一个 win32 api 函数,我可以调用 cmd 行并隐藏它,并且 from another discussion here ,我想我必须阅读日志文件才能获取 ffmpeg 进度信息。

那么我应该为 win32 api 调用哪个函数? 有谁知道更好/更简单的方法来完成这项工作? 谢谢

更新:

如果有人感兴趣,我找到一个 nice class module on how to grab the cmd output into my vb6 app, and it's by none other than the great joacim :)

最佳答案

我在 OSX 上为 Java 编写了完全相同的东西。非常简约的逻辑:

  • 您需要在生成 ffmpeg 输出时读取它。
  • 逐行解析输出(CR 和 LF)
    • 找到“持续时间”行,将时间值存储为整数秒。 “持续时间:00:03:18.48,开始:0.000000,比特率:274 kb/s”(CRLF 终止)
    • 从该点开始,解析 CR 并查找完成时间(以秒为单位)值。 “帧= 2816 fps=667 q=11.0 Lsize= 13036kB 时间=187.66比特率= 569.1kbits/s”(CR 终止,无 LF)
    • 除以(时间/持续时间)即可得出百分比!

我不相信将 ffmpeg 写入日志文件会起作用。至少在 *nix 上,ffmpeg 将此输出写入 std err,并且您需要捕获的状态行没有换行,因此会覆盖之前的状态行。这是您可以在自己的代码中克服的问题。

抱歉,无法帮助解决 VB6 部分,但假设可以直接捕获您 shell 进程的输出。

关于vb6 - 如何将ffmpeg转码过程信息链接到vb6 GUI应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/867383/

相关文章:

c# - 将 NULL 从 VB6 窗口传递到 .NET 可空 Int32

python - 如何使用 ffmpeg 从视频中获得前 16 个名声?

Bash,没有取消的 Zenity 进度条

php - jQuery 加载进度条

vb6 - 在 VB6 中的单选按钮之间切换

c++ - 在 C++ 中创建 DLL

vb6 - 访问 ADO 记录集中字段值的最有效方法是什么?

macos - Mac Terminal (Bash) 批处理程序使用 ffmpeg 获取多媒体文件信息

ffmpeg - 从云 IP 摄像机访问视频流

python - PyQt 进度条 QThread 无法正常工作