Wpf 创建视频缩略图的WCF服务

Wpf 创建视频缩略图的WCF服务,wpf,wcf,thumbnails,Wpf,Wcf,Thumbnails,我正在尝试创建一个WCF服务,它利用服务器上的WPF MediaPlayer为用户上传的视频生成缩略图。我发现了很多关于如何渲染帧并将其保存到文件的oif信息。但问题是我需要加入的关键事件MediaOpen(实际上没有一个事件)没有编辑fire 有人知道如果在WCF服务的上下文中使用WPF MediaPlayer事件是否不会触发吗 谢谢 Michael您可能需要在屏幕上呈现数据,以便触发这些事件——这一切都与WPF可视化树的一部分有关;当作为服务运行时,它不是 有许多方法可以尝试解决这个问题,所

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

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

谢谢
Michael

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


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

我决定尝试使用Expression media Encoder 2 SDK,效果非常好

从视频中生成缩略图的代码非常少-下面是一个片段

public void GenerateThumbnails(string fileName, int numberOfThumbnails)
{ 队列_positionsto缩略图=新队列(); Microsoft.Expression.Encoder.MediaItem视频=新的Microsoft.Expression.Encoder.MediaItem(文件名)

var totalmillizes=video.FileDuration.totalmillizes;
//为缩略图创建时间跨度队列
对于(int i=0;i0)
{
位图Bitmap=video.GetThumbnail(_positionsToThumbnail.Dequeue(),new System.Drawing.Size(100100));
保存(@“F:\thumbs\”+_positionsToThumbnail.Count.ToString()+“.png”,ImageFormat.png);
}

}

MediaOpen事件未触发-sorryhi Mlantosca。我还必须做同样的事情,剪切视频帧并制作缩略图,因为我已经安装了“Expression Encoder 2 Service Pack 1 SDK.msi”,但我没有使用microsoft.Expression的dll。。。你能写信给我,如果还有什么是我所安装的所有需要的-是不是dll没有在驱动器上?
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);
}