2009-01-13 153 views
0

我想創建一個WCF服務,利用服務器上的WPF MediaPlayer爲用戶上傳的視頻生成縮略圖。我發現了很多關於如何渲染幀並將其保存到文件的信息。但問題是關鍵事件MediaOpened(實際上沒有事件)我需要綁到 - 編輯火。WCF服務創建視頻縮略圖

有誰知道如果WPF MediaPlayer事件不會觸發如果使用離子的WCF服務的上下文?

感謝 邁克爾

+0

MediaOpened不會觸發事件 - 對不起 – MIantosca 2009-01-13 22:39:40

回答

1

我決定嘗試使用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); 
} 

}

+0

喜Mlantosca。我也必須做同樣的事情削減視頻幀,併爲此 我已經安裝了「Expression Encoder 2 Service Pack 1 SDK.msi」 ,但我沒有得到dll的microsoft.expression使用...請問您可以請寫我如果還有其他東西是需要的 – Radhi 2010-02-10 05:14:19

0

你可能需要在屏幕上顯示的數據,被解僱的那些事件 - 這一切都依賴於作爲WPF可視化樹的一部分;當作爲服務運行時,它不是。

有很多方法可以嘗試解決這個問題,所有這些方法都很複雜,並且可能不會擴展。我建議使用正常的Windows Media API(從Windows Media SDK)到底部。