0

我正在使用C来扫描包含由 ffmpeg 提取的帧的目录。现在,如果在扫描期间到达最后一个文件,我需要检查两个条件:

  1. 这是视频持续时间结束时的最后一个文件。
  2. 这是最后一个文件,因为 ffmpeg 突然终止并且不再能够填充目录

我的C程序工作流程如下:

while(<there exists files in the directory>)
{
   // iterate over them and do something with each frame
}

// coming out of the loop means no more files available...so I need a if condition
if(<check if ffmpeg is stopped>) // <-- need to know what to put inside the condition
{
   // start it again
}
else
{
  // video is over, nothing more left to do
}

我想我可以使用Process IDffmpeg 来做到这一点,但我将如何获得这些信息?检查是否ffpmeg已停止的任何其他替代方法?

一些元数据

操作系统:Windows 7
IDE:Dev C++
使用的语言:C

4

2 回答 2

0

不确定这是否适合您的情况,但是...在 unix 世界中,在后台运行的程序通常会创建一个带有进程 ID 的公开可读文件。然后在完成后将其删除。

您可以从批处理脚本创建此文件,然后在您的 C 程序中检查该文件中的 pid 是否正在运行。

于 2013-02-21T09:16:37.040 回答
0

您绝对可以等待FFmpeg过程完成。您通常获取ffmpeg.exe进程句柄并使用等待函数等待它,检查它GetExitCodeProcess或两者兼而有之。

如果您没有句柄,但您有进程标识符,OpenProcess则会为您提供句柄。

当然,如果您使用本地 Windows API,您将直接处理帧,而不是通过文件和外部进程,那么您就不必遇到这种麻烦。

于 2013-02-21T10:37:41.920 回答