0

Cを使用して、ffmpeg によって抽出されたフレームを含むディレクトリをスキャンしています。スキャン中に最後のファイルに到達した場合、次の 2 つの条件を確認する必要があります。

  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停止したかどうかを確認する他の代替方法はありますか?

一部のメタデータ

OS : Windows 7
IDE : Dev C++
使用言語 : C

4

2 に答える 2

0

FFmpegプロセスが終了するのを確実に待つことができます。通常、ffmpeg.exeプロセスハンドルを取得し、待機関数を使用してそれを待機するか、その処理を確認するか、GetExitCodeProcessまたはその両方を行います。

ハンドルがなくてもプロセス識別子があるOpenProcess場合は、ハンドルを取得します。

もちろん、ファイルや外部プロセスを介さずにフレームを直接処理するネイティブWindows APIを使用している場合は、この問題に直面する必要はありません。

于 2013-02-21T10:37:41.920 に答える
0

これがあなたの場合の方法であるかどうかはわかりませんが... UNIXの世界では、通常、バックグラウンドで実行されるプログラムは、プロセスIDで公開された読み取り可能なファイルを作成します。そして、終了したら削除します。

バッチ スクリプトからこのファイルを作成し、C プログラムでそのファイルの pid が実行されているかどうかを確認できます。

于 2013-02-21T09:16:37.040 に答える