C# Winform WindowsMediaPlayer控件

要做一个视频无缝切换的程序,所谓无缝就是在一个视频结束时立即开始另一个视频,中间不要有切换的黑屏

实现思路是放两个wmp播放控件,其中每个时刻只有一个在播放,另外一个处于暂停状态,并隐藏

当一个视频播放完后,切换显示另一个视频,同时这个视频隐藏起来并加载下一段视频,视频加载完成后(wmp会有事件通知)暂停

这样就去除了加载时的短暂空挡

有时可能会有键盘鼠标事件影响wmp的状态,所以使用定时器虽然监测wmp的播放状态

private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            wmp1.URL = ConfigurationManager.AppSettings["File1Path"];
            wmp2.URL = ConfigurationManager.AppSettings["File1Path"];
            playnow = 1;

            wmpnow = 1;
            wmp1.Visible = true;
            wmp2.Visible = false;

            wmp1pause = 0;
            wmp2pause = 0;
            
        }
 private bool isFullScreen = false;
        private int playnow = 1;
        private int wmp1pause = 0;
        private int wmp2pause = 0;
        private int wmpnow = 1;

        private void timer1_Tick(object sender, EventArgs e)
        {            
            if (wmp1.Ctlcontrols.currentPosition == 0)
                wmp1.Ctlcontrols.play();
            else
            {
                if (wmp1.Ctlcontrols.currentPosition > 0 && wmp1pause==0 && wmpnow==2)
                {
                    if (playnow == 2)
                    {
                        wmp1.Visible = true;
                        wmp1.settings.volume = wmp2.settings.volume;
                        wmpnow = 1;

                        playnow = 1;
                        wmp2.Visible = false;
                        wmp2.Ctlcontrols.stop();
                        wmp2pause = 0;
                    }
                    else
                        wmp1.Ctlcontrols.pause();
                    wmp1pause = 1;
                }
                if (wmp1.currentMedia.duration - wmp1.Ctlcontrols.currentPosition < 0.05)
                {
                    wmpnow = 2;
                    wmp2.Visible = true;
                    wmp2.settings.volume = wmp1.settings.volume;
                    wmp2.Ctlcontrols.play();     
               
                    wmp1.Visible = false;
                    wmp1.Ctlcontrols.stop();
                    wmp1.URL = ConfigurationManager.AppSettings["File1Path"];
                    wmp1pause = 0;
                }
            }
            if (wmp2.Ctlcontrols.currentPosition == 0)
                wmp2.Ctlcontrols.play();
            else
            {
                if (wmp2.Ctlcontrols.currentPosition > 0 && wmp2pause == 0 && wmpnow==1)
                {
                    if (playnow == 2)
                    {
                        wmp2.Visible = true;
                        wmp2.settings.volume = wmp1.settings.volume;                        
                        wmpnow = 2;

                        playnow = 1;
                        wmp1.Visible = false;
                        wmp1.Ctlcontrols.stop();
                        wmp1pause = 0;
                    }
                    else
                        wmp2.Ctlcontrols.pause();
                    wmp2pause = 1;
                }
                if (wmp2.currentMedia.duration - wmp2.Ctlcontrols.currentPosition < 0.05)
                {
                    wmpnow = 1;
                    wmp1.Visible = true;
                    wmp1.settings.volume = wmp2.settings.volume;                    
                    wmp1.Ctlcontrols.play();                    

                    wmp2.Visible = false;
                    wmp2.Ctlcontrols.stop();
                    wmp2.URL = ConfigurationManager.AppSettings["File1Path"];
                    wmp2pause = 0;
                }
            }            
        }

 

转载于:https://www.cnblogs.com/erictanghu/p/3760956.html

1、基本属性  URL 指定媒体位置,本机或网络地址 例如:axWindowsMediaPlayer1.URL = @"f:\aa.mp3"; uiMode 播放器界面模式,可为Full, Mini, None, Invisible ;Full:有下面的控制条; None:只有播放部份没有控制条 例如:axWindowsMediaPlayer1.uiMode = "Invisible"; playState 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪 enableContextMenu 启用/禁用右键菜单 fullScreen 是否全屏显示 stretchToFit 非全屏状态是否伸展到最佳大小 2、播放器基本控制 Ctlcontrols.play(); 播放 Ctlcontrols.pause(); 暂停 Ctlcontrols.stop(); 停止 Ctlcontrols.currentPosition 当前进度 Ctlcontrols.currentPositionString 当前进度,字符串格式。如“00:23” Ctlcontrols.fastForward(); 快进 Ctlcontrols.fastReverse(); 快退 Ctlcontrols.next(); 下一曲 Ctlcontrols.previous(); 上一曲 3、播放器基本设置 settings.volume 音量,0-100 settings.balance 声道,通过它应该可以进行立体声、左声道、右声道的控制。 settings.autoStart 是否自动播放 settings.mute 是否静音 settings.playCount 播放次数 settings.rate 播放速度 4、当前媒体属性 currentMedia.duration 媒体总长度 currentMedia.durationString 媒体总长度,字符串格式。如“03:24” currentMedia.getItemInfo(const string) 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址 currentMedia.setItemInfo(const string) 通过属性名设置媒体信息 currentMedia.name 同 currentMedia.getItemInfo("Title")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值