Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在WPF MediaElement中显示视频的第一帧_.net_Wpf_Video_Mediaelement - Fatal编程技术网

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

.net 在WPF MediaElement中显示视频的第一帧,.net,wpf,video,mediaelement,.net,Wpf,Video,Mediaelement,我有一个带有MediaElement的WPF应用程序,我用它来运行视频。我不希望视频在加载时自动播放,所以我将LoadedBehavior设置为手动 <MediaElement LoadedBehavior="Manual" Source="foo.wmv" MediaOpened="videoElement_MediaOpened" /> 但是,;我希望该元素在加载时显示视频的第一帧。有什么神奇的方法可以做到这一点吗

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

<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
方法?