2009-04-13 9 views
0

プログラムでAVIの最初のフレームを取得し、ビットマップイメージを取得してプレビューを表示する方法があるのだろうかと思っていました。 SilverlightのMediaControlは、Silverlightでサポートされているビデオファイルのプレビューを表示しますが、AVIは表示しません。私はSilverlight環境にあるため、アンマネージコードやライブラリを使用することはできません。私はファイルストリームにしかアクセスできません。SilverlightでAVIの最初のフレームのビットマップを取得する

答えて

1

SilverlightランタイムはAVIファイルをネイティブにサポートしていないため、MediaElementで使用することはできません。

実際には、AVIファイルを手作業で解析し、そのファイルからフレームを取り出す必要があります。フレームを解析する時点に達すると、潜在的に少し難解になります。

Silverlight 2でこの作業を行う予定の場合、AVIファイルにはWMVフレームまたはフレームがSilverlightのサポートされている画像形式(JPGまたはPNG)のいずれかに含まれている必要があります。 WMVで作業していた場合は、MediaStreamSourceをセットアップし、最初のサンプルとしてMediaStreamSourceに目的のビデオフレームを渡します。イメージフォーマットの1つで作業している場合は、Imageを使用し、そのソースをストリームに設定する必要があります。 Joe Stegmanがこれを使用してSilverlight 2が非ネイティブのimage formatsをサポートするのを助ける例を見ることができます。

これはSilverlight 3(これは現在ベータ版です)では一般的には同じですが、メディアフォーマットのサポートは、WMVに加えてH264、Raw YV12、Raw ARGBフレーム。同様に、イメージングのフロントで、フレームを描画するために使用できるWriteableBitmapがあります。

ビデオがTheora、Divx、Xvid、VP6などの場合は、そのフレームをデコードしてSilverlightに表示できるようにする必要があります。

1

類似の質問がSilverlight forumに掲載されました。フォーラムスレッドにはコードサンプルが含まれています。

最初の数フレームがフェードインするか、ビデオをあまり表現していない可能性があるため、フレームをビデオにさらに追加したい場合があります。

エンコーディングによっては、AVIファイルがMediaPlayerクラスで読み込めないことがあります。 (互換性のあるエンコードについては、hereを参照してください)。これを行うには、マネージコードでビデオをトランスコードする必要があります。独自のデコーダを見つけたり書いたりしない限り。

関連する問題