2009-04-13 78 views
0

我想知道是否有方法以編程方式檢索AVI的第一幀並獲取位圖圖像以向用戶顯示預覽。 Silverlight中的MediaControl顯示Silverlight支持的視頻文件的預覽,但不支持AVI。因爲我在Silverlight環境中,所以無法使用非託管代碼或庫來執行此操作。我只能訪問文件流。在Silverlight中獲取AVI第一幀的位圖

回答

1

Silverlight運行時本身不支持AVI文件,因此您將無法將這些文件用於MediaElement。

你需要做的是實際解析AVI文件,並從該文件中取出幀。一旦你到達瞭解析幀的地步,它可能會變得有點棘手。

如果您計劃在Silverlight 2上進行此項工作,則您的AVI文件需要包含Silverlight支持的圖像格式(JPG或PNG)之一中的WMV幀或幀。如果您使用的是WMV,我會設置一個MediaStreamSource並將所需的視頻幀作爲第一個樣本傳遞給MediaStreamSource。如果您正在使用其中一種圖像格式,則應使用「圖像」並將其源設置爲流。您可以看到Joe Stegman使用此示例幫助Silverlight 2支持非本機image formats的示例。如果你在Silverlight 3(它現在處於測試階段)這樣做,技術通常是相同的,但媒體格式支持會增加一點,以包括(除了WMV):H264,Raw YV12或Raw ARGB幀。同樣在成像方面,您現在可以使用WriteableBitmap來繪製幀。

如果您的視頻像Theora,Divx,Xvid,VP6等等。您需要找到一種方法來解碼該幀,以便在Silverlight中顯示它。

1

已在Silverlight forum上發佈類似問題。論壇主題包含代碼示例。

由於前幾幀可能會淡入,或者不能很好地代表視頻,所以您可能希望在視頻中選取更多幀。

根據編碼的不同,MediaPlayer類可能無法讀取您的AVI文件。 (有關兼容編碼,請參見here)。您可能需要對視頻進行轉碼才能使用託管代碼執行此操作。除非你找到/寫你自己的解碼器。