3

ビデオのフレームにリアルタイムでアクセスし、それらを変更できるようにする、コーディングが最も簡単なテクノロジは何ですか? DirectShow は知っていますが、そのプログラミング モデルは非常に複雑なようです。このようなフレーム フィルターのプログラミングを簡単にするフレームワークはありますか?

4

9 に答える 9

5

ビデオのフレームへのリアルタイム アクセスを許可し、それらを変更できるようにする

圧縮されていないビデオ フレームを取得し、レンダリングする前に変更することを検討していますか? または、ビデオ フレームを変更して、メディア ファイルに保存しますか?

最初のものは少し簡単です。DirectShow は最初は複雑に見えるかもしれませんが、実際には洗練されたフレームワークです。DirectShow.NET のサンプルを確認することを強くお勧めします。ビデオのフレームにアクセスするには、SampleGrabber フィルターを構成して DirectShow グラフに追加し、graph.RenderFile(mymediafile, null) を実行するだけで、フレームごとにコールバックを受け取ります。ピクセル データを変更すると、レンダリングされたビデオに表示されます。これには 1 ページ以上のコードは必要ありません。SampleGrabber の使用に関するサンプル ソース コードがありますが、これは Web カメラ用に作成されています。メディアの再生ははるかに簡単です (graph.RenderFile!)。

このようなものをファイルに書き込む必要がある場合は、上記と同様のことを行いますが、ビデオ レンダラーを使用する代わりに、ビデオ エンコーダーとマルチプレクサーを使用するようにグラフを構成する必要があります。おそらく、DirectShow を初めて使用する人にとっては面白くないでしょう ;)。

フレームを取得したいだけなら、directshow には IMediaDet と呼ばれる非常にシンプルなインターフェースがあります。メディア ファイルから任意のフレームを簡単に抽出する単純なクラスを作成しました。これは WPF を対象としていますが、ストレート GDI で動作するように調整できます。

于 2009-10-22T00:40:01.723 に答える
4

ffmpegコマンドとlibavcodecライブラリを使用するオープンソースプロジェクトを見ることができます。

于 2009-10-18T18:39:11.873 に答える
4

あなたが何を達成しようとしているのか正確にはわからないので、これは役に立たないかもしれませんが、ビデオのフレームをその場で変更する必要があるだけなら、AviSynthを調べることを強くお勧めします。スクリプト言語を使用してビデオを変更するビデオ フレーム サーバーです。バイナリ プラグインを作成するために使用できる SDK もあります。さまざまなタスクを実行するために、すでに多くのプラグインが利用可能です。スクリプトの例は次のようになります。

AviSource("C:\video.avi")
Crop(20,0,-20,0) //Crops 20px from the left and right of video 
BicubicResize(640,480) //Resize to 640x480 using bicubic filter
# increase the gamma
Levels(0, 1.2, 255, 0, 255)

これらのスクリプトは、Virtualdub などのメディア プレーヤーまたはエンコーダーで開くことができます。

于 2009-10-24T19:01:59.580 に答える
3

OK、「簡単」と言われたので、HTML5 <video> について言及する必要があります。次のリンクでデモと説明を参照してください。

于 2009-10-24T21:55:02.393 に答える
0

しばらく前に、MSのいくつかのC++パッケージにAviFileというクラスがありました。どうなるかわかりません。

この問題を解決する最善の方法は、Windowsを使い続ける場合はDirectShowを使用することです。

AVIファイル形式(これは十分に文書化されており、グーグルで見つけることができます)は少し似ています:

AVIRIFF  size speed imgWidth imgHeight frameTotal imgCodec audioCodec frame size 
  FRAME
  SOUND
  FRAME 
  SOUND
于 2009-10-08T23:43:16.420 に答える
0

FFMpegを使用できます。

FFmpeg のドキュメントを確認してください

于 2009-10-20T11:58:46.107 に答える
0

最も簡単な解決策は、AVIFile APIを使用することです。多くのサンプルが利用可能です。

于 2009-10-19T08:18:16.257 に答える