我想知道是否有方法以編程方式檢索AVI的第一幀並獲取位圖圖像以向用戶顯示預覽。 Silverlight中的MediaControl顯示Silverlight支持的視頻文件的預覽,但不支持AVI。因爲我在Silverlight環境中,所以無法使用非託管代碼或庫來執行此操作。我只能訪問文件流。在Silverlight中獲取AVI第一幀的位圖
0
A
回答
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)。您可能需要對視頻進行轉碼才能使用託管代碼執行此操作。除非你找到/寫你自己的解碼器。
相關問題
- 1. 使用AVFoundation獲取AVI的幀速率
- 2. 從.avi抓取幀
- 3. 使用OpenCV從.avi視頻獲取幀
- 4. 提取.avi文件的幀
- 5. 如何在視圖載入時獲取視頻的第一幀?
- 6. 如何從AVI視頻中提取幀
- 7. 獲取視頻軌道的第一幀
- 8. 來自AVI的OpenCV幀捕獲
- 9. 對avi異常的位圖
- 10. 使用avformat_seek_file無法獲取第一幀
- 11. 獲取第一幀的GIF圖像,而無需下載所有其他幀
- 12. Silverlight中的位圖?
- 13. ffmpeg H264 avi文件獲取幀時間戳UINT64_C錯誤
- 14. 使用OpenCV讀取/寫入AVI的最後一幀奇數
- 15. 獲取數據幀的第一行Python中的熊貓
- 16. 獲取第一行的位置端
- 17. 如何獲取PHP中第一幀.flv的快照?
- 18. 使用flex獲取視頻中的隨機(或第一)幀
- 19. 獲取不在第一幀的實例對象
- 20. 降低AForge中AVI文件的幀率
- 21. imagemagik在第10幀時訂購錯誤。像第一幀10幀的第二幀
- 22. 有沒有辦法在Silverlight MediaElement對象中獲取幀號?
- 23. 獲取AVI文件時間
- 24. 如何從C#ASP.NET中的一堆位圖編譯AVI文件?
- 25. Silverlight的 - 獲取一個DataGrid
- 26. 第一幀中的類。
- 27. 的Java:而在第一幀
- 28. 獲取線程中的第一個和最後一個職位
- 29. 在Linux上將AVI幀轉換爲JPG
- 30. 在Silverlight中獲取位於服務器端的資源的URI