0

上記のように、2 つのビデオ プレーヤーを備えた基本的な Windows.Forms GUI を作成しようとしています。1 つは元のビデオを表示し、もう 1 つは編集されたバージョンを表示します。C# の使用を検討していますが、特定の理由があれば C/C++ を使用することにもオープンです。Windows.Forms である必要はありませんが、視覚的に特に印象的である必要はないので、そうなると思いました。シンプルなため最高です/私はそれについて少し経験があります(ただし、何年もの間ではありません)。

現時点では、AxWindowsMediaPlayer コントロールを使用しています。

    private void loadMedia_btn_Click(object sender, EventArgs e)
    {         
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.AddExtension = true;
        openFileDialog1.DefaultExt = "*.*";
        openFileDialog1.ShowDialog();

        initialVideoPlayer.URL = openFileDialog1.FileName;
        string fileName = openFileDialog1.FileName;
    }

DirectShow や OpenCV (主に編集用) などの他のものをざっと見ましたが、WMP コントロールからフレームを簡単に抽出できないように見えるため、最善の方法がわかりません。もっときちんとした方法があったかどうか知っていますか?問題の 1 つは、研究室のコンピュータに DirectX が搭載されていないように見えること (または少なくとも新しいバージョンではないこと) で、DirectShow が機能するかどうかわかりません。

次のようなさまざまな質問を見てきました。

C# の Windows Media Player で再生中のビデオから画像を取得する

C# Windows フォームは、埋め込まれた Windows Media Player から画像をキャプチャします

しかし、それらは理想的とは思えない画像を作成しているようです。なぜなら、それらを処理するために各フレームを抽出したいからです (補間、できればモーション推定、エッジ検出の適用)。

そのため、ビデオを再生し、フレームを抽出して処理を実行し、すべてを元に戻して 2 番目のプレーヤーで再生しようとしています。

アドバイスをありがとう:)

4

1 に答える 1

0

カスタム変換 DirectShow フィルターを使用してビデオ処理を実行するか、コールバックを使用してサンプル グラバー フィルターを使用してコード内で直接処理を実行できます (C# では遅くなる可能性がありますが、Intel IPP 呼び出しを使用して非常に高速にすることができます)。

ビデオを編集するには、ソース、サンプル グラバー、エンコーダー/マルチプレクサー、または DirectShow Editing Services を備えた単純なグラフを使用できます (将来、より多くの機能を提供する予定がある場合)。

于 2014-12-08T12:37:58.397 に答える