WPF中MediaElement无法播放相对路径MP4视频问题求助
问题原因
你遇到的问题核心有两个:
- MediaElement的相对路径默认基于程序运行的工作目录(默认是
bin/Debug/bin/Release文件夹),而非解决方案根目录,你的视频文件没有被自动复制到运行目录下,导致相对路径无法定位到文件 - MediaElement底层依赖Windows Media Player组件,不支持直接读取嵌入到程序集的资源文件,必须以松散文件形式存在于磁盘中才能加载
你现有XAML配置无需修改,问题完全出在路径逻辑和文件属性设置上。
解决步骤
- 第一步:设置视频文件的生成属性
在解决方案资源管理器中找到DiceMovies文件夹下的Dice_2.mp4,右键点击选择「属性」,修改两个配置:- 「生成操作」设置为
无 - 「复制到输出目录」设置为
如果较新则复制
修改完成后重新编译项目,手动确认bin/Debug/DiceMovies/Dice_2.mp4文件存在
- 「生成操作」设置为
- 第二步:调整路径加载逻辑
不推荐直接使用相对Uri,程序运行过程中工作目录可能被修改(例如打开文件对话框后工作目录会变更),容易导致路径失效,建议直接拼接运行目录生成绝对路径:// 获取程序运行的根目录 var runDir = AppDomain.CurrentDomain.BaseDirectory; // 拼接得到视频的完整路径 var videoFullPath = Path.Combine(runDir, @"DiceMovies\Dice_2.mp4"); VideoDice.Source = new Uri(videoFullPath, UriKind.Absolute); VideoDice.Height = 500; VideoDice.Width = 500; VideoDice.Play();
如果一定要用相对Uri,确保工作目录正确的前提下,原来的写法在文件复制到输出目录后也能正常运行,但稳定性不如拼接绝对路径的方案。
内容的提问来源于stack exchange,提问作者Ruben Demo
相关产品推荐
相关产品推荐

