当前位置:首页 > 操作系统 > Windows

C# Winform WindowsMediaPlayer控件

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

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

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

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

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

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

            wmpnow </span>= <span>1</span><span>;
            wmp1.Visible </span>= <span>true</span><span>;
            wmp2.Visible </span>= <span>false</span><span>;

            wmp1pause </span>= <span>0</span><span>;
            wmp2pause </span>= <span>0</span><span>;
            
        }</span>
            <span>private</span>
            <span>bool</span> isFullScreen = <span>false</span><span>;
        </span><span>private</span><span>int</span> playnow = <span>1</span><span>;
        </span><span>private</span><span>int</span> wmp1pause = <span>0</span><span>;
        </span><span>private</span><span>int</span> wmp2pause = <span>0</span><span>;
        </span><span>private</span><span>int</span> wmpnow = <span>1</span><span>;

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

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

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

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

 

原文:http://www.cnblogs.com/erictanghu/p/3760956.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐