在WPF MediaElement中显示第一帧视频

sti*_*k81 16 .net wpf video mediaelement

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

<MediaElement LoadedBehavior="Manual" 
              Source="foo.wmv" 
              MediaOpened="videoElement_MediaOpened" />
Run Code Online (Sandbox Code Playgroud)

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

Seb*_*ray 24

你还需要

ScrubbingEnabled="True"
Run Code Online (Sandbox Code Playgroud)

然后在Load上设置一个事件

Loaded="Video1_Loaded"
Run Code Online (Sandbox Code Playgroud)

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

Video1.Play();
Video1.Pause();
Run Code Online (Sandbox Code Playgroud)

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

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

获取或设置一个值,该值指示MediaElement是否在暂停时更新搜索操作的帧.这是一个依赖属性.

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


小智 9

您不必创建活动,请参阅以下内容

<MediaElement Source="foo.wmv" 
              MediaOpened="videoElement_MediaOpened" 
              LoadedBehavior="Pause" ScrubbingEnabled="True" />
Run Code Online (Sandbox Code Playgroud)