wpf MediaElement未显示

rkkpypqq  于 2023-04-13  发布在  其他
关注(0)|答案(3)|浏览(326)

我在我们正在构建的应用程序中的一个新创建的窗口上放置了一个MediaElement,将其源设置为wmv(也尝试使用gif),但当我运行它时,它不会显示在屏幕上。
然后,我创建了一个新的独立项目,一切都按预期进行。
这是一个很好的例子。

<MediaElement Source="pre-loader.wmv" LoadedBehavior="Manual" Name="Video" />

这是不起作用的代码:

<MediaElement Source="pre-loader.wmv" LoadedBehavior="Manual" Name="Video" />

我知道,都一样...我不明白?
我已经尝试了几种不同的方法,但我得到了相同的结果。测试项目的工作,主要应用程序不。
我在两个项目中使用相同的wmv文件,我还确保在这两种情况下复制到输出目录。设置为复制,如果较新。
任何帮助都是。。。嗯,很有帮助
更新:我尝试使用snoop查找MediaElement,ActualWidth和ActualHeigt都为0,但height属性为140,width属性为NAN。此外,source = Default。
当我在Blend中查看屏幕时,也会出现“加载预览时出错”,但它不会告诉我错误是什么。

cetgtptt

cetgtptt1#

首先要查看的是项目资源。“Source”属性表示您是从相对URI获取视频的,只有当视频位于项目文件中时,该属性才有效。
默认情况下,MediaElement有一个无声的失败,这意味着它不会抛出异常,除非你专门编程。这通常是在Mediaelement的“MediaFailed”(VB)/“OnMediaFailed”(C#)属性中的某种操作设置在代码后面。我通常在这个事件中放置一个消息框来告诉用户视频无法加载。
在您遇到问题的项目中,您需要做的第一件事是进入项目属性,转到“资源”选项卡,并将视频作为资源导入。(在“资源”文件夹中)和(就像你做的那样)将它的属性设置为BuildAction = None和CopyToOutput = Copy(如果更新的话)。不要将它设置为“Embedded Resource”,否则MediaElement将无法播放它。它必须设置为“无”。
然后,将媒体元素源更改为“Resources/pre-loader.wmv”
另一个(相当明显的)问题是检查你是否在mediaelement.play后面的代码中调用了www.example.com函数。如果你不需要显式地控制播放/暂停/停止函数,我会将LoadedBehavior设置为“播放”。
希望有帮助!评论如果你有任何更多的问题。

bq3bfh9z

bq3bfh9z2#

在项目属性中检查两个项目的“Platform tagret”属性。一些编解码器只能在x86或x64模式下工作。

fwzugrvs

fwzugrvs3#

以下步骤为我解决了这个问题:
1.在/porject_name/bin/Debug/目录下创建一个名为Resources(或任何您想要的名称)的文件夹
1.将视频文件复制到/porject_name/bin/Debug/Resources文件夹中
1.

<MediaElement Name="media_element" Source="C:\Users\wpf_project\bin\Debug\Resources\file_name.mp4" LoadedBehavior="Play">

1.在你的编辑器“Visual Studio”中右键点击你的视频文件并选择属性。
1.将生成操作设置为“内容”
1.将“复制到输出目录”设置为“始终复制”
希望这个能帮上忙

相关问题