2

私はC#で作業しており、ビデオファイルの個々のフレームをキャプチャする必要があります。できるだけ早く(リアルタイムよりも速く)、特定のフレーム番号を探し、n番目ごとのフレームをBMPやJPEGなどのグラフィックファイル形式にキャプチャしたいと思います。キャプチャされるフレームが予測可能で再現可能である、つまりフレームをドロップしないことが強く望まれます。

DirectShowの使用経験はありますが、このテクノロジが最新のWindows.NET環境でこの問題に使用するのに最適かどうかはわかりません。理想的には、可能な限り抽象化するための.NETまたはCOMベースのライブラリを見つけたいと思います。ビデオファイルを実際に画面に表示する必要はありません。実際、ビデオ再生用のWindowsユーザーインターフェイスは必要ありません。

誰かが調査する技術や特定の製品についての提案がありますか?それらは、DivXを含むMPEG-2およびMPEG-4ベースのビデオファイルと互換性がある必要があります。QuickTimeのサポートは素晴らしいボーナスです。

4

3 に答える 3

2

ある種の処理を行っており、ビデオを表示していないと見なされるため、これを「リアルタイムよりも速く」行う必要がある理由がわかりません。

DirectShow.Netと .Net 2.0を使用して同様のことを書きました。directshow を使用するには、ある程度の経験が必要です。そうでない場合は、試してみるのにかなり苦労するでしょう。

ウィンドウから IMediaDet インターフェイスにアクセスして、フレーム キャプチャを実行することもできます。この方法は簡単ですが、MPEG2 のサポートなど、特定の制限があります。「一部の」flvもサポートしていないことに気付きました。CodeProject - FrameGrabberでサンプルを確認してください。

Quicktime のサポートは、 QuickTimeAlternativeのインストールを意味します

DirectShow.Net を使用して記述したコードを投稿できます。必要な場合はお知らせください (投稿する前に美化する必要があります:P)。

編集:注:「予測可能な」キャプチャに関しては、ビデオはリアルタイムで再生されていないが一時停止されているため、問題はまったくありません。そのため、任意のポイントにシークしてからフレームを抽出できます。

于 2008-12-19T07:38:52.600 に答える
0

アロハ

(無料の)プログラム Image Grabber II.net は、まさにあなたが説明したことを行います。ソースも公開されていたのを覚えているようですが、今は見つかりません。.NET フレームワークが必要です。

-エドード

于 2008-12-18T15:14:39.233 に答える
0

他の誰かがこの種の問題を抱えている場合に備えて、もう 1 つのオプションはTVideoGrabberと呼ばれる Delphi ベースの ActiveX コントロールです。無料ではありませんが、非常に安価で、DirectShow の薄いラッパーとしてうまく機能します。

私のアプリケーションには GUI がなく、Windows サービスとして実行されているため、TVideoGrabber は私の問題にはあまり適していません。私はそれを機能させていますが、複数のコントロールをインスタンス化し(最初はスレッドセーフではない可能性があります)、Windowsサービスとして.NETから偽のイベントループで実行しています...うまくいかないことがいくつかあります。コントロールが作成中のスレッドからのみ操作されることを確認しましたが、まだ同時実行の問題があるようです。しかし、それは別の質問です... :)

于 2008-12-22T14:07:21.903 に答える