使用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;
}
}
}
我希望在这个问题发布时有人回复过。我花了很多时间才弄清楚为什么我无法通过设置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属性;但这也于事无补。它真的必须来自事件处理程序之外!