2009-12-22 36 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文件,您将看到格式。相应的视频文件的名称在那里,您可以用您需要的相应文件名覆盖它。这就是我为我的项目所做的。现在正在编写二进制文件。