MonoGame中使用VideoPlayer加载视频时遇ContentLoadException错误求助
在MonoGame中加载Video时遇到ContentTypeReader找不到的问题解决方法
问题根源
手动引用Microsoft.Xna.Framework.Video.dll的方式不符合MonoGame的组件依赖逻辑,视频功能需要配套的内容处理器和正确的程序集引用支持,直接添加独立dll会导致内容加载时无法找到对应的VideoReader类型。另外,内容项目中视频文件的处理器设置错误也会触发该异常。
解决步骤
替换手动dll引用为NuGet包
删除手动添加的Microsoft.Xna.Framework.Video.dll引用,通过NuGet安装对应平台的MonoGame官方包:- 桌面GL项目:安装
MonoGame.Framework.DesktopGL - WindowsDX项目:安装
MonoGame.Framework.WindowsDX
这些包会自动包含视频相关的所有必要程序集和内容处理器,避免版本不匹配问题。
- 桌面GL项目:安装
检查内容项目中视频文件的属性
打开你的Content项目,找到main_intro.mp4文件,右键设置属性:- 生成操作:设为
Content - 复制到输出目录:设为
如果较新则复制 - 内容处理器:选择
Video - MonoGame(若没有该选项,说明NuGet包未正确安装,需重新部署)
- 生成操作:设为
补充渲染逻辑(可选但必要)
视频播放后需要在Draw方法中绘制帧画面,示例代码:protected override void Draw(GameTime gameTime) { graphics.GraphicsDevice.Clear(Color.Black); if (videoPlayer.State == MediaState.Playing) { spriteBatch.Begin(); spriteBatch.Draw(videoPlayer.GetTexture(), Window.ClientBounds, Color.White); spriteBatch.End(); } base.Draw(gameTime); }
额外注意事项
- 确认活动解决方案平台(x86)与NuGet包的目标平台一致,避免架构不兼容。
- 若为Devcade平台项目,核心视频加载逻辑遵循MonoGame通用规则,无需额外特殊配置。
内容的提问来源于stack exchange,提问作者Garousome
相关产品推荐
相关产品推荐

