Сервис WCF для создания миниатюр видео - PullRequest
0 голосов
/ 14 января 2009

Я пытаюсь создать службу WCF, которая использует WPF MediaPlayer на сервере для создания миниатюр для видео, которое загружает пользователь. Я нашел много информации о том, как визуализировать кадр и сохранить его в файл. Но проблема в ключевом событии MediaOpened (на самом деле ни одно из событий), которое мне нужно связать с , а не - ПРАВКА.

Кто-нибудь знает, не происходят ли события WPF MediaPlayer, если они используются в контексте службы WCF?

спасибо Michael

Ответы [ 2 ]

1 голос
/ 14 января 2009

Я решил попробовать и использовать Expression Media Encoder 2 SDK, и он отлично работал.

Очень мало кода для создания миниатюр из видео - вот фрагмент

public void GenerateThumbnails(string fileName, int numberOfThumbnails)

{ Queue _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);
}

}

0 голосов
/ 14 января 2009

Скорее всего, вам понадобится отобразить данные на экране, чтобы эти события были запущены - все это связано с тем, что они являются частью визуального дерева WPF; который при запуске в качестве службы это не так.

Есть много способов решить эту проблему, и все они запутаны и, вероятно, не будут масштабироваться. Я предлагаю использовать обычный Windows Media API (из Windows Media SDK), чтобы разобраться в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...