You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI中使用MediaElement加载本地嵌入视频失败问题求助

解决MAUI CommunityToolkit MediaElement无法播放Resources\Raw嵌入视频的问题

针对你遇到的仅Resources\Raw中嵌入视频无法播放的问题,可按以下步骤排查解决:

1. 确认视频文件的构建操作设置

右键Resources\Raw文件夹中的视频文件 → 选择「属性」:

  • 「构建操作」必须设置为 MauiAsset
  • 「复制到输出目录」设置为 「如果较新则复制」
    如果构建操作不正确,资源不会被正确嵌入到程序集里,导致无法读取。

2. 使用完整的资源命名空间前缀

MediaSource.FromResource需要传入包含项目命名空间的完整资源名称,而非仅文件名。比如你的项目命名空间是MyMauiVideoApp,正确的资源名应为MyMauiVideoApp.Resources.Raw.myvideo.mp4。

你可以通过以下代码列出所有嵌入的资源名称,确认视频文件的正确路径:

var allResources = typeof(MainPage).Assembly.GetManifestResourceNames();
foreach (var name in allResources)
{
    Console.WriteLine(name); // 在输出窗口查看资源完整名称
}

找到对应视频的完整名称后,修改代码:

mediaElement.Source = MediaSource.FromResource("你的项目命名空间.Resources.Raw.myvideo.mp4");

3. 修正XAML中embed URI的格式

XAML中使用embed URI时,需要注意是三个斜杠,且同样要带完整命名空间:

<toolkit:MediaElement x:Name="mediaElement" 
                      Source="embed:///你的项目命名空间.Resources.Raw.myvideo.mp4" 
                      ShouldShowPlaybackControls="True" />

4. 验证资源可访问性(可选)

如果以上步骤无效,可尝试通过流的方式加载资源,验证资源是否能被正确读取:

using var resourceStream = typeof(MainPage).Assembly.GetManifestResourceStream("你的项目命名空间.Resources.Raw.myvideo.mp4");
if (resourceStream == null)
{
    // 资源不存在或路径错误,回到步骤1和2检查
    Console.WriteLine("嵌入资源未找到");
}
else
{
    mediaElement.Source = MediaSource.FromStream(() => resourceStream);
}

如果流能正常获取但仍无法播放,需检查视频编码是否被Windows平台支持(比如部分编码的MP4可能需要额外解码器)。

5. 确认NuGet包版本兼容性

确保安装的CommunityToolkit.Maui.MediaElement是适配.NET 9的最新稳定版本,避免版本不兼容导致的问题。在NuGet包管理器中检查并更新到最新版本。

内容的提问来源于stack exchange,提问作者Some Girl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 08:12:34