WPF C# 媒体元素显示视频的第一张图片

Posted

技术标签:

【中文标题】WPF C# 媒体元素显示视频的第一张图片【英文标题】:WPF C# Media Element Show first image of video 【发布时间】:2013-07-22 08:22:41 【问题描述】:

我有一个 .mov 文件,我想使用 WPF 的 MediaElement 播放,当我使用 MediaState.Manual 时,我可以毫无顾虑地播放和暂停,但我想在加载时显示视频的第一个图像或帧它,源代码设置在后面的代码中,我尝试了 MediaElement.ScrubbingEnabled = true 后面的代码和 xaml 但它仍然没有显示。

这是我的代码(xaml 方面):

   <DockPanel Height="386" HorizontalAlignment="Center"  Name="dockPanel1" VerticalAlignment="Top" Width="731">
        <MediaElement Name="McMediaElement" LoadedBehavior="Manual" UnloadedBehavior="Manual" Stretch="Fill" MediaOpened="Element_MediaOpened" MediaEnded="Element_MediaEnded" OpacityMask="#FF040410" Height="386" IsVisibleChanged="SingAlong_IsVisibleChanged" ScrubbingEnabled="True"></MediaElement>
    </DockPanel>

代码隐藏(xaml.cs):

    private void PlayAudio()
    


        McMediaElement.LoadedBehavior = MediaState.Manual;
        McMediaElement.Source = new Uri("../../SingAlong/GrassHopper and Ants/ants2.mov", UriKind.RelativeOrAbsolute);
        McMediaElement.ScrubbingEnabled = true;

       McMediaElement.Play();
    

    private void button1_Click_1(object sender, RoutedEventArgs e) // Play button
    
        if (McMediaElement.Source != null)
        
            McMediaElement.Play();
        
        else
            PlayAudio();
    

    private void button2_Click(object sender, RoutedEventArgs e) // Pause button
    
        McMediaElement.Pause();
    

【问题讨论】:

【参考方案1】:

据我所知,您仅在单击button1 时才加载视频(设置Source),但您希望在此之前显示第一帧。为此,您必须以另一种方法加载视频,最好是在您的PageWindow 加载时。然后您可以执行以下操作:

McMediaElement.ScrubbingEnabled = true;
McMediaElement.Play();
McMediaElement.Pause();

【讨论】:

您也可以删除 Play() 并将 Position 属性设置为时间跨度 0 以实现相同的效果。

以上是关于WPF C# 媒体元素显示视频的第一张图片的主要内容,如果未能解决你的问题,请参考以下文章

如何在视频的第一帧之前放置静止图像?

第五十二篇 OC获取视频的第一帧图片thumbnailImage

wpf显示视频,image控件闪屏,使用winform控件实现

全屏视频播放器 - 导航栏后面的媒体控制器

微信小程序------媒体组件(视频,音乐,图片)

在Android中如何获取视频的第一帧图片并显示在一个ImageView中