質問

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

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

ありがとう マイケル

役に立ちましたか?

解決

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

動画からサムネイルを生成するための非常に小さなコード-これがスニペットです

public void GenerateThumbnails(string fileName, int numberOfThumbnails)

{     キュー_positionsToThumbnail = new Queue();     Microsoft.Expression.Encoder.MediaItem video = new 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);
}

}

他のヒント

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

これを解決しようとする方法はたくさんありますが、それらはすべて複雑であり、スケールしない可能性があります。通常のWindows Media API(Windows Media SDKから)を使用して、一番下に到達することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top