在WPF MediaElement中显示第一帧视频

时间:2009-08-28 13:09:43

标签: .net wpf video mediaelement

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

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

然而;我希望元素在加载时显示视频的第一帧。这有什么神奇的方法吗?

3 个答案:

答案 0 :(得分:23)

您还需要

ScrubbingEnabled="True"

然后在Load

上设置一个事件
Loaded="Video1_Loaded"

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

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

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

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

  

获取或设置一个指示的值   MediaElement是否会更新   用于寻找操作的帧   暂停。这是一个依赖属性。

我尝试了没有ScrubbingEnabled的相同方法,但发现第一帧不会渲染。不确定它是否只是我用于此的硬件。 rember的另一个项目是MediaElement的工作方式,一旦你调用Play(),你可能实际上并没有在第一帧上实际上Pause(),所以你可能想要在调用Play之前减少流上的音量并在调用后重置暂停。

答案 1 :(得分:9)

答案 2 :(得分:1)

我无法评论,所以这是我的回答: Scrubbing是指在暂停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);

感谢擦洗小费!