WPF Mediaelement 在重复快进的位置属性时冻结

问题描述

要求是创建一个快进按钮,可以连续转发视频。我通过在视频快进时添加时间跨度来使用位置属性。在手动转发时(单击单击),对于每个按钮单击,它会按时间跨度 amt 执行和媒体移动。问题是如果我多次点击快进按钮(大约 10 次),媒体就会冻结。还有一个搜索栏,可以继续前进而没有问题。但是媒体元素会冻结。

XAML

<MediaElement x:Name="Mediaelement" LoadedBehavior="Manual" ScrubbingEnabled="True"  MediaOpened="MediaOpened" UnloadedBehavior="Manual" Source="{Binding MediaFile}"/>

视图模型中的代码

private void  FastForward() 
    {
          Mediaelement.Position += TimeSpan.FromMilliseconds(100);        
    }

我还尝试使用以下代码模拟连续前进。但这也会导致在几次(~10)帧移动后帧冻结

代码

private async void  FastForward()
    {
        do
        {      
        Mediaelement.Position += TimeSpan.FromMilliseconds(100);
        await Task.Delay(1000);   
        } while (MediaelementPosition < Mediaelement.NaturalDuration.TimeSpan);   
    }

我确实使用 dispatcherTimer 和 TimerTick 将搜索器/进度条与媒体元素同步。这工作正常,但不确定这是否对帧冻结有任何影响。

帧在结尾或开头没有冻结。它发生在下一帧应该出现的中间。我也有按预期工作的播放和暂停功能。 任何建议/指导将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...