.net 在WPF MediaElement中显示视频的第一帧
我有一个带有MediaElement的WPF应用程序,我用它来运行视频。我不希望视频在加载时自动播放,所以我将LoadedBehavior设置为手动.net 在WPF MediaElement中显示视频的第一帧,.net,wpf,video,mediaelement,.net,Wpf,Video,Mediaelement,我有一个带有MediaElement的WPF应用程序,我用它来运行视频。我不希望视频在加载时自动播放,所以我将LoadedBehavior设置为手动 <MediaElement LoadedBehavior="Manual" Source="foo.wmv" MediaOpened="videoElement_MediaOpened" /> 但是,;我希望该元素在加载时显示视频的第一帧。有什么神奇的方法可以做到这一点吗
<MediaElement LoadedBehavior="Manual"
Source="foo.wmv"
MediaOpened="videoElement_MediaOpened" />
但是,;我希望该元素在加载时显示视频的第一帧。有什么神奇的方法可以做到这一点吗 您还需要
ScrubbingEnabled="True"
然后在加载时设置一个事件
Loaded="Video1_Loaded"
在Video1_加载方法中添加以下内容:
Video1.Play();
Video1.Pause();
在调用play方法之前,不会渲染任何视频内容。因此,即使设置超过第一帧的位置,也不会渲染任何数据
我认为财产是关键
获取或设置一个值,该值指示
MediaElement是否将更新
查找操作的帧,而
停顿了一下。这是一个依赖属性
我尝试了同样的方法,但没有使用
scrubingEnabled
,但发现第一帧无法渲染。不确定这是否只是我用于此的硬件。另一项需要记住的是,MediaElement的工作方式是,一旦调用Play()
,您可能无法准确地在第一帧上执行Pause()
,因此您可能希望在调用Play()
之前减少流上的音量,并在调用Pause()
之后重置,您不必创建事件,见下文
<MediaElement Source="foo.wmv"
MediaOpened="videoElement_MediaOpened"
LoadedBehavior="Pause" ScrubbingEnabled="True" />
我无法发表评论,因此以下是我的答案: 清理是指在MediaElement暂停时更新渲染图像
//Todo: Set your source
//if not stated in the xmal, you can still set this here.
Player.LoadedBehavior = MediaState.Manual;
//Turn scrubbing on
Player.ScrubbingEnabled = true;
Player.Pause();
Player.Position = TimeSpan.FromTicks(1);
谢谢你的擦洗技巧 Thx-这很有效!我必须说我对这出戏不太适应暂停触发。看到其他人也提出了这个建议,但发现这个方法有点“黑客”。但如果这是唯一的办法,我想我们必须接受它。ScrubingEnabled是一个很好的属性,但似乎与启动时显示第一个视频帧无关。使用
MediaOpen
事件而不是Loaded
对我有效,只要我播放,然后在事件处理程序中暂停。你无法通过播放控制MediaElement,请停止。。。因此,必须将LoadedBehavior设置为手动。如果您将其设置为暂停,您将如何开始播放?@AlexanderZwitbaum:根据与集成按钮无关的其他事件调用play
方法?