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





Вам, вероятно, потребуется отобразить данные на экране, чтобы эти события были запущены - все это связано с тем, чтобы быть частью визуального дерева WPF; при работе в качестве службы это не так.
Есть много способов решить эту проблему, и все они запутаны и, вероятно, не будут масштабироваться. Я предлагаю использовать обычные API-интерфейсы Windows Media (из Windows Media SDK), чтобы разобраться в этом.
Я решил попробовать использовать Expression Media Encoder 2 SDK, и он отлично сработал.
Очень мало кода для создания миниатюр из видео - вот фрагмент
public void GenerateThumbnails(string fileName, int numberOfThumbnails)
{ Очередь _positionsToThumbnail = новая очередь (); 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);
}
}
привет Млантоска. Мне также нужно сделать то же самое, вырезать видеокадр и сделать эскиз для этого. Я установил "Expression Encoder 2 Service Pack 1 SDK.msi", но я не получаю dll microsoft.expression для использования ... не могли бы вы написать мне если для этого требуется что-то еще
Это все, что я установил - этой DLL нет на диске?
Событие MediaOpened НЕ запускается - извините