为什么我不能在Windows Media Player Control中设置currPosition

时间:2016-01-13 17:58:09

标签: c# winforms mp4 wmp axwindowsmediaplayer

我在Winforms应用程序中使用Windows媒体控件(AxWMPLib.AxWindowsMediaPlayer)来播放mp4视频。我希望能够在特定位置启动视频,然后在一定秒数后停止播放。

我的问题是,当我尝试设置当前位置时,它会将当前位置设置为零(在它开始播放之前或暂停时)或小数字(如6)(如果它已经播放)。

这就是我试图改变当前位置的方式: m_windowsMediaPlayer.Ctlcontrols.currentPosition = value;

这个问题Embedded Windows Media Player Set Position is slow表明问题可能是由于关键帧数量较少造成的,但我是否尝试将其设置为30秒或1200秒并不重要。它仍然在6秒后开始播放。

此问题Windows Media Player control - get/set video position?显示设置currentPosition适用于某些人。

以下是相关代码:

        m_windowsMediaPlayer.URL = GetVideoFileFullPath();
        RestartVideo();

    private void RestartVideo()
    {
        m_windowsMediaPlayer.Ctlcontrols.currentPosition = StartTime;

        StopTimer();
        StartTimer();

        m_windowsMediaPlayer.Ctlcontrols.play();
    }

我还尝试添加一个OpenStateChanged事件,因为我认为可能一切都被延迟了,所以我应该在文件真正打开后设置它。但这也没有帮助。

    private void m_windowsMediaPlayer_OpenStateChange(object sender, AxWMPLib._WMPOCXEvents_OpenStateChangeEvent e)
    {
        if (m_windowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying)
        {
            if (m_start)
            {
                m_windowsMediaPlayer.Ctlcontrols.pause();
                m_start=false;
                RestartVideo();
            }
        }
    }

我正在显示的mp4文件仍然被另一个应用程序追加。但是静态mp4文件也存在问题。如果其他视频格式更好用,我应该可以更改其他应用以使用该视频格式。我查看了使用vlcDotNetForms,但由于我希望能够尽可能少地使用外部依赖项来分发这个应用程序,我希望通过使用windows附带的东西来解决这个问题。

另一点:我需要支持Windows Vista计算机,我不能指望他们使用.NET 3.5或更新版本。目前我的目标是.NET 2,但如果有必要,我可以针对.NET 3。我在Windows 8.1上看到了这些问题。

0 个答案:

没有答案