我使用 C 扫描包含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
}
我认为我可以使用ffmpeg的Process ID
来做到这一点,但我怎么能得到这些信息呢?检查ffpmeg
是否已停止的任何其他替代方式?
操作系统: Windows 7
IDE: Dev C ++
使用的语言: C
答案 0 :(得分:0)
不确定这是否适合您的情况,但是...在unix世界中,在后台运行的程序通常会创建一个包含其进程ID的公共可读文件。然后在完成后删除它。
您可以从批处理脚本创建此文件,然后在C程序中检查该文件中的pid是否正在运行。
答案 1 :(得分:0)
您绝对可以等待FFmpeg
进程完成。您通常会获得ffmpeg.exe
流程处理,并使用wait functions等待它,检查其GetExitCodeProcess
或两者。
如果您没有句柄,但确实有进程标识符,OpenProcess
将为您提供帮助。
当然,如果您使用本机Windows API直接处理帧,而不是通过文件和外部进程,则不必遇到麻烦。