2009-12-22 39 views

回答

0

好吧,我花了一段時間,但我破解了這一點。
由於您需要安裝GameStudio,因此無法瀏覽內容管道。
我最終對XNA內容構建器進行了反向工程,以找出如何製作我自己的XNB文件的 。原來,對於WMV文件,XNB是一個簡單的二進制描述符。
現在我只是爲我在運行時找到的任何WMV創建一個XNB,將它推入內容文件夾
並且它工作正常。

+3

Hey Shachar,我正在使用使用GameStudio的方法,但會喜歡更簡單的方法。你能提供一些關於你到達的解決方案的更多細節嗎?你有可能分享代碼來爲wmvs生成xnb嗎? – JohnU 2010-11-24 02:24:37

+0

@Shachar Weis很想看看你是如何做到的,關心分享?這可能非常有用! – TimothyP 2013-01-23 05:00:36

1

這不幸的是不會工作......他們的API要求通過內容管道處理視頻。

自XNA團隊發佈視頻API以來,我沒有更新它,但您可以查看我編寫的這個開源項目Scurvy.Media(http://scurvymedia.codeplex.com/)。它也是一個內容管道,但也許你可以通過.FromFile類型的方法來修改它。

如果您有任何問題,請通過codeplex與我聯繫。 :-)

0

您也可以嘗試在XNA的DirectShow視頻播放:
http://xnadsplayer.codeplex.com/

我從來沒有使用過,所以不知道它有多好作品,但它是你的另一種選擇。

4

您可以嘗試使用XNA 3.1中添加的視頻API以及創作者網站上的winform content loading sample。該示例顯示如何允許用戶選擇內容文件,並讓系統將其編譯爲.xnb,然後在運行時將其加載回內存。

+0

此示例將模型加載到: contentBuilder.Add(fileName,「Model」,null,「ModelProcessor」); 我找不到可加載視頻的「處理器」。 我試過「視頻處理器」但這並不起作用。 – 2010-02-22 20:17:02

2

正如蚜蟲提到的那樣,您可以修改winform content loading sample

讓它接受WMVs,你需要修改如下:

添加VideoImporters到組件數組中ContentBuilder.cs:

static string[] pipelineAssemblies = 
{ 
    "Microsoft.Xna.Framework.Content.Pipeline.FBXImporter" + xnaVersion, 
    "Microsoft.Xna.Framework.Content.Pipeline.XImporter" + xnaVersion, 
    "Microsoft.Xna.Framework.Content.Pipeline.TextureImporter" + xnaVersion, 
    "Microsoft.Xna.Framework.Content.Pipeline.EffectImporter" + xnaVersion, 
    "Microsoft.Xna.Framework.Content.Pipeline.VideoImporters" + xnaVersion  
}; 

然後在MainForm.cs改變

contentBuilder.Add(fileName, "Model", null , "ModelProcessor"); 

contentBuilder.Add(fileName, "Video", "WmvImporter" , "VideoProcessor"); 

然後您必須使用Playing a Video on a Surface example

中描述的方法播放視頻。此方法僅使用3.1版本的Content Loading示例運行錯誤;在XNA 4中按照我描述的throws a Pinvoke error。我已經發布到XNA論壇,希望找到解決這個問題的辦法。

編輯:我收到了XNA框架開發瞭如下答覆中提到的PInvoke的例外:

可以放心地忽略此警告。 默認情況下,此MDA由 開啓,以表示潛在的perf pinvokes問題,該問題沒有 聲明的顯式調用約定。 這個用於在默認關閉之前 VS2010所以這就是爲什麼你沒有在3.1中看到它 。我們在GS4遊戲中發現了一點點太 以使它離開 ,但基本上沒有問題 與功能。您應該在 開發/調試您的定製 處理器時纔打這個。這是可以理解的 討厭,你可以關掉 進入調試 - >例外 - >管理 調試 助理 - > PInvokeStackImbalance。我們 將使此版本在下一個 版本中消失。

1

John U.您可以使用十六進制編輯器打開XNB文件,您將看到格式。相應的視頻文件的名稱在那裏,您可以用您需要的相應文件名覆蓋它。這就是我爲我的項目所做的。現在正在編寫二進制文件。