AxWMPLib.AxWindowsMediaPlayer WMV 文件出现了奇怪的行为

AxWMPLib.AxWindowsMediaPlayer has presented weird behavior for WMV files

在我的 Windows Forms C# 应用程序中,我实现了 COM AxWMPLib.AxWindowsMediaPlayer,我有一个设置 currentPosition 的按钮,但是当涉及到 WMV 时,它表现出奇怪的行为文件,它没有正确设置 currentPosition,而是有 2~6 秒的差异。

在下面的示例中,我将 currentPosition 设置为 7,但它实际上设置回 5 或有时设置为 4,为什么?它只发生在 WMV 文件上,但 MKV 和 MP4 工作正常。

namespace MediaPlayerTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.URL = @"D:\Downloads\sample.wmv";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.currentPosition = 7.0;
        }
    }
}

这是一个错误吗?如何解决?有 WMV 文件的解决方法吗?

感谢@Hans Passant 的评论。 根据这个答案:https://superuser.com/questions/591904/windows-media-player-v12-seek-position-wont-play-from-a-chosen-position

WMV 似乎有编码问题。除了 MKV 和 MP4 文件格式工作正常之外,我还做了很多测试以发现其他文件格式的类似问题,例如:AVI、WebM、3GP、MPG、VOB、MOV、FLV。

WMV 是唯一出现问题的文件。 所以我为 WMV 文件做了这个解决方法:

private void button1_Click(object sender, EventArgs e)
{
    string isWMV = axWindowsMediaPlayer1.currentMedia.sourceURL;

    if (isWMV.EndsWith(".wmv"))
    {
        ToolTip toolTip = new ToolTip();
        toolTip.Show("It's disabled for WMV files due to the faulty WMV indexing table.", button1);
        return;
    }
    
    axWindowsMediaPlayer1.Ctlcontrols.currentPosition = 7.0;
}