【问题标题】:WCF Service to Create Video Thumbnails用于创建视频缩略图的 WCF 服务
【发布时间】:2010-10-01 06:23:47
【问题描述】:

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

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

谢谢 迈克尔

【问题讨论】:

  • MediaOpened 事件不会触发 - 抱歉

标签: wpf wcf thumbnails


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我决定尝试使用 Expression Media Encoder 2 SDK,效果很好。

    从视频生成缩略图的代码非常少 - 这是一个 sn-p

    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);
    }
    

    }

    【讨论】:

    • 嗨,姆兰托斯卡。我还必须做同样的事情剪切视频帧并为我安装了“Expression Encoder 2 Service Pack 1 SDK.msi”做一个缩略图,但我没有得到 microsoft.expression 的 dll 来使用......你能写信给我吗如果还有其他需要的话
    • 这就是我安装的全部 - 驱动器上没有那个 dll 吗?
    猜你喜欢
    • 2011-04-17
    • 2018-04-18
    • 2023-03-17
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2011-04-24
    相关资源
    最近更新 更多