C#AxWindowsMediaPlayer循环

Ser*_*lyn 5 c# loops wmp

我有这个恼人的问题,我无法追查它出错的地方.我在代码中创建一个Windows Media Player,我正在尝试循环播放视频......它循环播放,但只播放一次...

所以它播放视频,再一次.然后它就停止并显示视频的结束.所以好像它只循环一次.

这是我的代码:

        try {
            wmPlayer = new AxWMPLib.AxWindowsMediaPlayer();

            wmPlayer.enableContextMenu = false;
            ((System.ComponentModel.ISupportInitialize)(wmPlayer)).BeginInit();
            wmPlayer.Name = "wmPlayer";
            wmPlayer.Enabled = true;
            wmPlayer.Dock = System.Windows.Forms.DockStyle.Fill;
            mainForm.Controls.Add(wmPlayer);
            ((System.ComponentModel.ISupportInitialize)(wmPlayer)).EndInit();
            wmPlayer.uiMode = "none";

            if(kind == "idle") {
                IdleVideo(name);
            }
        }
        catch { }
    }

    private static void IdleVideo(string name) {
        System.Diagnostics.Debug.WriteLine("Video called once");
        wmPlayer.URL = @"C:\ProjectSilver\assets\RadarDetectie\idle\" + name + "_idlescreen_movie.ogv";
        Debug.WriteLine(wmPlayer.URL);
        wmPlayer.settings.setMode("loop", true);

        wmPlayer.Ctlcontrols.play();
    }
Run Code Online (Sandbox Code Playgroud)

所以我希望你们能帮忙,为什么不继续玩呢?

Jer*_*rry 6

为事件添加事件处理程序PlayStateChange:

wmPlayer.PlayStateChange += wmPlayer_PlayStateChange;
Run Code Online (Sandbox Code Playgroud)

然后在事件处理程序中检查是否e.newState==8表示media ended:

AxWMPLib.AxWindowsMediaPlayer wmPlayer;
private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
   if(e.newState==8) // MediaEnded
        // call function to play the video again     
}
Run Code Online (Sandbox Code Playgroud)

对于播放状态,请查看:http: //msdn.microsoft.com/en-us/library/windows/desktop/dd562460%28v=vs.85%29.aspx

编辑: 我不知道你在做什么kind,或者代码的第一部分定义在哪里,但这对我有用:

AxWMPLib.AxWindowsMediaPlayer wmPlayer;

private void button2_Click(object sender, EventArgs e)
    {
        wmPlayer = new AxWMPLib.AxWindowsMediaPlayer();
        wmPlayer.CreateControl();
        wmPlayer.enableContextMenu = false;
        ((System.ComponentModel.ISupportInitialize)(wmPlayer)).BeginInit();
        wmPlayer.Name = "wmPlayer";
        wmPlayer.Enabled = true;
        wmPlayer.Dock = System.Windows.Forms.DockStyle.Fill;
        this.Controls.Add(wmPlayer);
        ((System.ComponentModel.ISupportInitialize)(wmPlayer)).EndInit();
        wmPlayer.uiMode = "none";
        wmPlayer.URL = @"C:\...";
        wmPlayer.settings.setMode("loop", true);

        wmPlayer.Ctlcontrols.play();
    }
Run Code Online (Sandbox Code Playgroud)


Far*_*ukh 5

只是使用

    private void Form1_Load(object sender, EventArgs e)
    {
        // give the path of your video here
        axWindowsMediaPlayer1.URL = "Path of your video";
        // this line will automatically start your video
        axWindowsMediaPlayer1.settings.autoStart = true;
        //here the system will automatially create a thread and will keep on 
         running your video...
        axWindowsMediaPlayer1.settings.setMode("loop", true);
    }
Run Code Online (Sandbox Code Playgroud)