WCF服务创建视频缩略图

时间:2009-01-13 22:38:26

标签: wpf wcf thumbnails

我正在尝试创建一个WCF服务,该服务利用服务器上的WPF MediaPlayer为用户上传的视频生成缩略图。我发现了很多关于如何渲染帧并将其保存到文件的信息。但问题是关键事件MediaOpened(实际上没有任何事件)我需要绑定到 - EDIT fire。

有人知道如果在WCF服务的上下文中使用WPF MediaPlayer事件是否会触发吗?

感谢 迈克尔

2 个答案:

答案 0 :(得分:1)

我决定尝试使用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);
}

}

答案 1 :(得分:0)

您可能需要在屏幕上呈现数据,以便触发这些事件 - 它们都与WPF可视树的一部分相关联;当作为服务运行时,它不是。

有许多方法可以尝试解决这个问题,所有这些方法都很复杂,而且可能无法扩展。我建议使用普通的Windows Media API(来自Windows Media SDK)来深入了解它。