首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# AxWindowsMediaPlayer循环

C# AxWindowsMediaPlayer循环
EN

Stack Overflow用户
提问于 2013-11-17 03:36:15
回答 2查看 19.5K关注 0票数 6

我有这个恼人的问题,我不能追踪它出了什么问题。我正在用代码创建一个Windows Media Player,并且我正在尝试循环一个视频...它会循环,但只有一次...

所以它播放视频,然后再一次。然后它就会停下来,显示视频的结尾。所以它看起来好像只循环一次。

这是我的代码:

代码语言:javascript
复制
        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();
    }

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-17 05:28:32

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

代码语言:javascript
复制
wmPlayer.PlayStateChange += wmPlayer_PlayStateChange;

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

代码语言:javascript
复制
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     
}

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

编辑:我不知道你用kind做了什么,也不知道你的代码的第一部分是在哪里定义的,但这对我来说很有效:

代码语言:javascript
复制
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();
    }
票数 6
EN

Stack Overflow用户

发布于 2017-06-17 13:44:55

只需使用

代码语言:javascript
复制
    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);
    }
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20022864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档