1

同じ axmediaplayer で 2 つのビデオを再生しようとしています。私の理論は次のとおりです。メイン ムービーは、タイマー イベントが発生するまで再生されます。その後、新しいムービーが再生され、最後のムービー位置が保存され、2 番目のムービーが終了すると、最後のムービー位置から最後のムービーが続きます。

しかし、2 番目のムービーを終了した後、私の axmediplayer が機能せず、最初のムービーを続行できません...

ネットで検索したところ、イベント ハンドラーから URL を呼び出すために発生したと誰かが言っていました。しかし、それを修正する方法とハンドラーから設定する方法がわかりません...

private void timerTeserInterval_Tick(object sender, EventArgs e)
        {
            if (this.MoviePlayerCanPlayTeaser && playerMode != PlayerMode.TeaserMode && axWindowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying)
            {
                MoviePlayerCurrentPossition = Convert.ToInt32(axWindowsMediaPlayer.Ctlcontrols.currentPosition);
                LastMovieName = MoviePathFile;

                axWindowsMediaPlayer.Ctlcontrols.pause();
            }
        }

        private void PlayMovie()
        {
            if (MovieNameList == null || MovieNameList.Count == 0)
                return;

            if (playerMode == PlayerMode.MovieMode && MoviePlayerCurrentPossition == 0)
            {
                if (MovieNameListIndex < MovieNameList.Count)
                {
                    MoviePathFile = MovieFolder + "\\" + MovieNameList[MovieNameListIndex];

                    MovieNameListIndex++;
                }
                else
                {
                    MovieNameListIndex = 0;
                    MoviePathFile = MovieFolder + "\\" + MovieNameList[MovieNameListIndex];
                    MovieNameListIndex++;
                }

                try
                {
                    axWindowsMediaPlayer.URL = MoviePathFile;
                    if (axWindowsMediaPlayer.URL != "" && axWindowsMediaPlayer.URL != null)
                    {

                        axWindowsMediaPlayer.Ctlcontrols.play();
                        playerMode = PlayerMode.MovieMode;
                    }
                }
                catch { }
            }

            else if (MoviePlayerCurrentPossition != 0)
            {
                try
                {
                    axWindowsMediaPlayer.URL = LastMovieName;
                    axWindowsMediaPlayer.Ctlcontrols.currentPosition = MoviePlayerCurrentPossition;

                    if (axWindowsMediaPlayer.URL != "" && axWindowsMediaPlayer.URL != null)
                    {

                        axWindowsMediaPlayer.Ctlcontrols.play();
                        playerMode = PlayerMode.MovieMode;
                    }
                    MoviePlayerCurrentPossition = 0;
                }
                catch { }
            }
        }

        private void PlayTeaser()
        {
            if (this.MoviePlayerCanPlayTeaser)
            {

                if (TeaserNameList == null || TeaserNameList.Count == 0)
                    return;

                if (TeaserNameListIndex < TeaserNameList.Count)
                {
                    TeaserPathFile = TeaserFolder + "\\" + TeaserNameList[TeaserNameListIndex];

                    TeaserNameListIndex++;
                }
                else
                {
                    TeaserNameListIndex = 0;
                    TeaserPathFile = TeaserFolder + "\\" + TeaserNameList[TeaserNameListIndex];
                    TeaserNameListIndex++;
                }

                try
                {
                    axWindowsMediaPlayer.URL = TeaserPathFile;
                    if (axWindowsMediaPlayer.URL != "" && axWindowsMediaPlayer.URL != null)
                    {
                        playerMode = PlayerMode.TeaserMode;
                        axWindowsMediaPlayer.Ctlcontrols.play();
                    }
                }
                catch { }
            }
        }

        private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
        {
            if (axWindowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
            {
                playerMode = PlayerMode.MovieMode;

                PlayMovie();
            }

            else if (axWindowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsPaused)
            {
                playerMode = MoviePlayer.PlayerMode.TeaserMode;

                PlayTeaser();
            }
        }
4

0 に答える 0