.net - 在 WPF MediaElement 中显示视频的第一帧

标签 .net wpf video mediaelement

我有一个带有 MediaElement 的 WPF 应用程序,我用它来运行视频。我不希望视频在加载时自动播放,因此我将 LoadedBehavior 设置为 Manual。

<MediaElement LoadedBehavior="Manual" 
              Source="foo.wmv" 
              MediaOpened="videoElement_MediaOpened" />

但是;我希望元素在加载时显示视频的第一帧。有什么神奇的方法可以做到这一点吗?

最佳答案

你还需要

ScrubbingEnabled="True"

然后在 Load 上设置一个事件

Loaded="Video1_Loaded"

在 Video1_Load 方法中添加以下内容:

Video1.Play();
Video1.Pause();

在调用播放方法之前,不会呈现任何视频内容。因此,即使您将位置设置为超过第一帧,您也不会渲染任何数据。

我认为 MediaElement.ScrubbingEnabled属性(property)是关键。

Gets or sets a value that indicates whether the MediaElement will update frames for seek operations while paused. This is a dependency property.

我在没有 ScrubbingEnabled 的情况下尝试了相同的方法,但发现第一帧无法呈现。不确定这是否只是我为此使用的硬件。另一项要记住的是 MediaElement 的工作方式,一旦您调用 Play() 您实际上可能不会在第一帧上完全 Pause(),因此您可能想要在调用 Play() 之前降低流的音量并在调用 Pause() 之后重置。

关于.net - 在 WPF MediaElement 中显示视频的第一帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1346886/

相关文章:

c# - ObjectDataSource 插入和更新方法错误

wpf - 为什么我需要调用 Dispatcher.BeginInvoke() 以允许视觉对象在打印之前正确绑定(bind)?

c# - 将组合框数据从列表绑定(bind)到属性

Python:如何从视频中获取显示纵横比?

javascript - 视频循环几次后停止

.net - 在 .NET 4.5 中动态生成代码的最简单方法是什么?

c# - 使用 Azure Service Fabric 与自定义 Azure 云的优缺点?

c# - Visual Studio : [CS0433] type Func<T, TResult> 存在于 <System.Core (3.5.0.0)> 和 <mscorlib (4.0.0.0)> 中

c# - 如何在不知道何时完成的情况下显示进程的进展

video - FFmpeg 创建 mp4 变成异步的