Вопрос

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

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

Спасибо Майкл

Это было полезно?

Решение

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

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

public void GenerateThumbnails(string fileName, int numberOfThumbnails)

{Queue _positionstothumbnail = new queue ();Microsoft.Expression.Encoder.MediaItem video = новый 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;а при работе в качестве службы это не так.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top