Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#AxWindowsMediaPlayer循环_C#_Loops_Wmp - Fatal编程技术网

C#AxWindowsMediaPlayer循环

C#AxWindowsMediaPlayer循环,c#,loops,wmp,C#,Loops,Wmp,我有一个恼人的问题,我无法找出哪里出了问题。 我正在用代码创建一个Windows Media Player,我正在尝试循环一个视频。。。它循环,但只有一次 所以它播放视频,再一次。然后它停下来,显示视频的结尾。所以它似乎只循环一次 这是我的代码: try { wmPlayer = new AxWMPLib.AxWindowsMediaPlayer(); wmPlayer.enableContextMenu = false;

我有一个恼人的问题,我无法找出哪里出了问题。 我正在用代码创建一个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();
    }

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

PlayStateChange
事件添加一个事件处理程序:

wmPlayer.PlayStateChange += wmPlayer_PlayStateChange;
然后在事件处理程序中检查
e.newState==8
,这意味着
媒体已结束

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     
}
有关播放状态,请检查以下内容:

编辑: 我不知道您如何处理
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();
    }
只用

    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);
    }

什么是
种类
?试钓的位置在哪里?谢谢你的回复,但它并没有解决问题。不过,它确实给了我一个更好调试的机会。我调试了playstate,但playstate似乎不是问题所在。不知怎的,它退出了线程?这是我的输出:38993线程0x1290已退出,代码为259(0x103)。好的,我发现了一些奇怪的东西。当我双击视频开始再次播放…是的,你的代码现在和我的相同。在我的代码中,可以忽略“kind”变量。视频只会被调用一次,我调试过,所以它不是双重调用之类的问题。我从另一个程序调用这个函数。这个视频播放器实际上在一个.dll中,所以问题仍然存在,视频会重复一次,但会在最后一秒暂停或停止…所有这些小时。。杰斯。这确实是一种格式,但为什么它播放了两次然后停止了。。。真奇怪。现在唯一的“坏”事情是它在开始新循环之前有一点滞后。所以它有时会闪烁一点。但是谢谢你的帮助!现在可以了。如果你知道一些可以阻止闪烁的东西,那就太好了。嗨,欢迎来到StackOverflow。虽然您粘贴的代码可能是正确的,但应该包括一些解释,使其更有用。你能做到吗?