0

サーバー上の WPF MediaPlayer を利用して、ユーザーがアップロードするビデオのサムネイルを生成する WCF サービスを作成しようとしています。フレームをレンダリングしてファイルに保存する方法について、多くの oif 情報を見つけました。しかし、問題は、重要なイベント MediaOpened (実際にはどのイベントもありません) に関連付ける必要があることです。

WCF サービスのコンテキストで使用した場合、WPF MediaPlayer イベントが発生しないかどうかは誰にもわかりませんか?

ありがとうマイケル

4

2 に答える 2

1

Expression Media Encoder 2 SDK を試してみることにしましたが、うまくいきました。

ビデオからサムネイルを生成するための非常に小さなコード - ここにスニペットがあります

public void GenerateThumbnails(string fileName, int numberOfThumbnails)

{ Queue _positionsToThumbnail = new Queue(); Microsoft.Expression.Encoder.MediaItem ビデオ = 新しい Microsoft.Expression.Encoder.MediaItem(fileName);

var totalMilliseconds = video.FileDuration.TotalMilliseconds;

//create a queue of timespans for the thumbnails
for (int i = 0; i < numberOfThumbnails; i++)
{
    _positionsToThumbnail.Enqueue(TimeSpan.FromMilliseconds((((2 * i) + 1) * totalMilliseconds) / (2 * numberOfThumbnails)));
}

//create the thumbnails and save them to disk
while(_positionsToThumbnail.Count > 0)
{

    Bitmap bitMap = video.GetThumbnail(_positionsToThumbnail.Dequeue(), new System.Drawing.Size(100,100));
    bitMap.Save(@"F:\thumbs\" + _positionsToThumbnail.Count.ToString() + ".png", ImageFormat.Png);
}

}

于 2009-01-14T04:09:17.727 に答える
0

これらのイベントを発生させるには、おそらくデータを画面にレンダリングする必要があります。これはすべて、WPF ビジュアル ツリーの一部であることに関連しています。サービスとして実行しているときはそうではありません。

これを解決しようとする方法はたくさんありますが、それらはすべて複雑であり、おそらく拡張することはできません。通常の Windows Media API (Windows Media SDK から) を使用して、その真相を突き止めることをお勧めします。

于 2009-01-13T23:11:02.493 に答える