代码之家  ›  专栏  ›  技术社区  ›  stiank81

在wpf mediaelement中显示第一帧视频

  •  16
  • stiank81  · 技术社区  · 15 年前

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

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

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

    3 回复  |  直到 10 年前
        1
  •  23
  •   Sebastian Gray    15 年前

    你也需要

    ScrubbingEnabled="True"
    

    然后在加载时设置事件

    Loaded="Video1_Loaded"
    

    在video1加载方法中,添加以下内容:

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

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

    我认为 MediaElement.ScrubbingEnabled 属性是键。

    获取或设置一个值,该值指示 MediaElement是否将更新 搜索操作框架 停顿了一下。这是依赖属性。

    我尝试了同样的方法,但是发现第一帧无法渲染。不确定这是否只是我用来做这个的硬件。另一个需要重新编写的项目是MediaElement的工作方式,一旦调用play(),就可能无法准确地在第一帧上暂停(),因此您可能希望在调用play之前减少流上的音量,并在调用pause之后重置。

        2
  •  8
  •   Ahmed Cogenli    14 年前

    您不必创建事件,请参见以下内容

    <MediaElement Source="foo.wmv" 
                  MediaOpened="videoElement_MediaOpened" 
                  LoadedBehavior="Pause" ScrubbingEnabled="True" />
    
        3
  •  1
  •   Invalid    10 年前

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

    谢谢你的擦洗技巧!