none
MediaElement 长时间循环播放会卡住不动 RRS feed

  • 问题

  • <UserControl x:Class="GGPlayer_WPF.View.VideoView"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" Unloaded="UserControl_Unloaded" Loaded="UserControl_Loaded">
        <Grid>
            <MediaElement x:Name="mediaShow" MediaEnded="mediaShow_MediaEnded" LoadedBehavior="Manual" UnloadedBehavior="Close" ScrubbingEnabled="True" Stretch="Fill" ></MediaElement>     
        </Grid>
    </UserControl>

    后台代码只是变换Source (播放地址存放在一个List集合中)

    private void mediaShow_MediaEnded(object sender, RoutedEventArgs e)
            {
                mediaShow.Stop();

                listIndex++;

                if (listIndex == resPath.Count)
                {
                    listIndex = 0;
                }

                mediaShow.Source = new Uri(resPath[listIndex]);

                mediaShow.Play();
            }

    长时间这样循环播放(半天以上),就会出现视频卡住不动,有时会造成整个程序不运行,只能强制关闭。重新启动程序就好了。

    使用MediaElement 会有什么性能问题吗?

    2018年5月14日 9:43

全部回复

  • 你好,

    根据你的描述,应该是WPF 的窗体的渲染出现了问题。 在你的用户控件的Loaded 加上下面的代码,在试试会不会在出现这样的问题。

    private void UserControl_Loaded(object sender, RoutedEventArgs e)
            {
                try
                {
                    var hwndSource = PresentationSource.FromVisual(this) as HwndSource;
                    var hwndTarget = hwndSource.CompositionTarget;
                    hwndTarget.RenderMode = RenderMode.SoftwareOnly;
                }
                catch (Exception ex)
                {
                    //Log.ErrorException(ex.Message, ex);
                }
            }

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年5月15日 2:58
    版主