同じ 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();
}
}