質問
サーバー上の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から)を使用して、一番下に到達することをお勧めします。
所属していません StackOverflow