使用axWindowsMediaPlayer播放两个视频

本文关键字:两个 视频 axWindowsMediaPlayer 播放 使用 | 更新日期: 2023-09-27 18:27:13

我试着播放jpg(在循环中),点击后mp4应该在结束后播放,那个jpg应该再次播放。我不知道为什么,但在我玩axWindowsMediaPlayer1_PlayStateChange视频后,播放然后停止。帮助

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Video
{
    public partial class Form1 : Form
    {
        bool clicked = false;
        public Form1()
        {
            InitializeComponent();
            axWindowsMediaPlayer1.URL = "wait2.JPG";
        }

        private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
        {
            if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded & clicked== true)
            {
                clicked = false;
                axWindowsMediaPlayer1.settings.setMode("Loop", true);
                axWindowsMediaPlayer1.URL = "wait2.JPG";
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }
        }
        private void axWindowsMediaPlayer1_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e)
        {
            axWindowsMediaPlayer1.settings.setMode("Loop", false);
            axWindowsMediaPlayer1.URL = "video.MP4";
            axWindowsMediaPlayer1.Ctlcontrols.play();
            clicked = true;
        }

    }
}

使用axWindowsMediaPlayer播放两个视频

我希望在这个问题发布时有人回复过。我花了很多时间才弄清楚为什么我无法通过设置URL属性来启动新视频。我终于在这里找到了这个问题的答案:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd562470%28v=vs.85%29.aspx

问题在于从axWindowsMediaPlayer1_PlayStateChange()事件处理程序中设置URL属性。根据上述msdn文件:

"不要从事件处理程序代码中调用此方法。从事件处理程调用URL可能会产生意外结果。"

因此,URL属性必须设置在偶数处理程序之外。我还尝试了Dispatcher.Invoke(),甚至从事件处理程序中启动了一个新线程来设置URL属性;但这也于事无补。它真的必须来自事件处理程序之外!