C#播放器控件的常用方法介绍

摘要:
enableContextMenu:布尔;启用/禁用右键菜单fullScreen:boolean;是否全屏显示//基本播放器控制Ctlcontrols播放;播放控件暂停;暂停控制停止;停止控制电流位置:double;当前进度控制。currentPositionString:字符串;当前进度,字符串格式。

右击工具箱->选择项(I)... -> 显示"选择工具箱项" -> COM组件 -> Windows Media Player   wmp.dll 添加

复制代码
[基本属性]  
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible(不计大小写)
playState:integer; 播放状态。这个属性改变时同时引发PlayStateChange事件与StateChange事件。取值范围为枚举型:WMPLib.WMPPlayState,它的成员如下:
  wmppsUndefined = 0;   //未知状态
  wmppsStopped = 1;    //播放停止
  wmppsPaused = 2;     //播放暂停
  wmppsPlaying = 3;     //正在播放
  wmppsScanForward = 4;   //向前搜索
  wmppsScanReverse = 5;   //向后搜索
  wmppsBuffering = 6;     //正在缓冲
  wmppsWaiting = 7;      //正在等待流开始
  wmppsMediaEnded = 8;    //播放流已结束
  wmppsTransitioning = 9;    //准备新的媒体文件
  wmppsReady = 10;      //播放准备就绪
  wmppsReconnecting = 11;   //尝试重新连接流媒体数据
  wmppsLast = 12;       //上一次状态,状态没有改变
  在PlayStateChange中写代码可以防止播放rmvb等非默认类型的问题(用wmppsReady)。
  enableContextMenu:Boolean;    启用/禁用右键菜单
  fullScreen:boolean;         是否全屏显示

  //播放器基本控制
  Ctlcontrols.play; 播放
  Ctlcontrols.pause; 暂停
  Ctlcontrols.stop; 停止
  Ctlcontrols.currentPosition:double; 当前进度
  Ctlcontrols.currentPositionString:string; 当前进度,字符串格式。如“00:23”
  Ctlcontrols.fastForward; 快进
  Ctlcontrols.fastReverse; 快退
  Ctlcontrols.next; 下一曲
  Ctlcontrols.previous; 上一曲

  [settings] wmp.settings //播放器基本设置
  settings.volume:integer; 音量,0-100
  settings.autoStart:Boolean; 是否自动播放
  settings.mute:Boolean; 是否静音
  settings.playCount:integer; 播放次数
  //顺序播放
  wmp.settings.setMode("shuffle", False)
  //随机播放
  wmp.settings.setMode("shuffle", True)
  //循环播放
  wmp.settings.setMode("loop", True)

[currentMedia] wmp.currentMedia //当前媒体属性
currentMedia.duration:double; 媒体总长度
currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24”
currentMedia.getItemInfo(const string); 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述, "Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址
currentMedia.setItemInfo(const string); 通过属性名设置媒体信息
currentMedia.name:string; 同 currentMedia.getItemInfo("Title")
复制代码

基本设置实例:

复制代码
axWindowsMediaPlayer1.windowlessVideo = false;   //设为false后双击屏幕可以全屏
axWindowsMediaPlayer1.fullScreen = true; //设播放器全屏播放

axWindowsMediaPlayer1.URL = @"mms://192.168.0.102/vod/jingwei.wma";//播放资源

axWindowsMediaPlayer1.Ctlcontrols.play();        //播放
axWindowsMediaPlayer1.Ctlcontrols.stop();        //停止
axWindowsMediaPlayer1.Ctlcontrols.pause();       //暂停

axWindowsMediaPlayer1.settings.autoStart = true;     //自动播放

axWindowsMediaPlayer1.settings.mute = false;         //静音
axWindowsMediaPlayer1.settings.volume = 100;      // 音量 int 0 ~ 100   100 是最大音量

axWindowsMediaPlayer1.currentMedia.duration.ToString();//影片长度
axWindowsMediaPlayer1.Ctlcontrols.currentPosition = 30; //当前的播放位置 double

axWindowsMediaPlayer1.currentMedia.getItemInfo("Title");//标题
axWindowsMediaPlayer1.currentMedia.getItemInfo("Author");//作者
复制代码

全屏控制实例代码:

复制代码
using System.IO;
using WMPLib; 

public videoPlay()
        {
            InitializeComponent();

            //全屏设置及隐藏鼠标
            this.WindowState = FormWindowState.Maximized;
            this.FormBorderStyle = FormBorderStyle.None;
            //Cursor.Hide();
            //播放器全屏
            Rectangle screenSize = System.Windows.Forms.SystemInformation.VirtualScreen;//获取屏幕的宽和高
            this.panel1.Location = new System.Drawing.Point(0, 0);
            this.panel1.Size = new System.Drawing.Size(screenSize.Width,screenSize.Height);
            this.axWindowsMediaPlayer1.Location = new System.Drawing.Point(0, 0);
            this.axWindowsMediaPlayer1.Size = new System.Drawing.Size(screenSize.Width, screenSize.Height);
            //播放器设置
            axWindowsMediaPlayer1.uiMode = "None";//播放器样式
            axWindowsMediaPlayer1.stretchToFit = true;//非全屏状态时是否伸展到最佳大小 
            axWindowsMediaPlayer1.enableContextMenu = false;//禁用播放器右键菜单
       

        }

        private IWMPPlaylist videoList;//创建播放列表
        private bool ifLoop = true;//视频是否循环

        //设置是否循环播放
        public bool IfLoop
        {
            get { return ifLoop; }
            set { ifLoop = value; }
        }

        //播放状态改变时发生
        private void axWindowsMediaPlayer1_StatusChange(object sender, EventArgs e)
        {
            //判断视频是否已停止播放  
            if ((int)axWindowsMediaPlayer1.playState == 1)
            {
                //停顿2秒钟再重新播放  
                //System.Threading.Thread.Sleep(2000);
                //重新播放  
                //axWindowsMediaPlayer1.Ctlcontrols.play();
            }
        }
        //播放
        public void videoStart()
        {
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }
        //列表播放
        public void videoListStart()
        {
            videoPlayList();//重新获取播放列表
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }
        //暂停
        public void videoPause()
        {
            axWindowsMediaPlayer1.Ctlcontrols.pause();
        }
        //重播
        public void videoReplay()
        {
            videoStop();
            videoStart();
        }
        //列表重播
        public void videoListReplay()
        {
            axWindowsMediaPlayer1.currentPlaylist = videoList;//重新载入播放列表
            videoStart();
        }
        //停止播放
        public void videoStop() 
        {            
            //axWindowsMediaPlayer1.currentPlaylist.clear();//清除列表
            axWindowsMediaPlayer1.Ctlcontrols.stop();
        }
        //视频静音
        public void videoMute(bool t)
        {
            axWindowsMediaPlayer1.settings.mute = t;
        }
        //播放下一个视频
        public void videoNext()
        {
            //判断当前所播放的视频是否是列表的最后一个
            if (axWindowsMediaPlayer1.currentMedia.name == axWindowsMediaPlayer1.currentPlaylist.Item[axWindowsMediaPlayer1.currentPlaylist.count - 1].name)
            {
            }
            else
            {
                axWindowsMediaPlayer1.Ctlcontrols.next();//播放下一个
            }
        }
        //播放上一个媒体
        public void videoPrevious()
        {  //判断当前所播放的视频是否是列表的第一个
            if (axWindowsMediaPlayer1.currentMedia.name == axWindowsMediaPlayer1.currentPlaylist.Item[0].name)
            {
            }
            else
            {
                axWindowsMediaPlayer1.Ctlcontrols.previous();//播放上一个
            }
        }

        //获取播放类表及初始化
        public void videoPlayList() 
        {
            videoList = axWindowsMediaPlayer1.playlistCollection.newPlaylist("one");//创建播放列表
            string path = @".datavideo";//媒体路径
            DirectoryInfo dir = new DirectoryInfo(path);
            foreach (FileSystemInfo fsi in dir.GetFileSystemInfos())
            {
                if (fsi is FileInfo)
                {
                    FileInfo fi = (FileInfo)fsi;
                    videoList.appendItem(axWindowsMediaPlayer1.newMedia(fi.FullName));
                }
            }
            axWindowsMediaPlayer1.currentPlaylist = videoList;//查找到视频、播放类表
            axWindowsMediaPlayer1.settings.setMode("loop", ifLoop);//设置类表循环播放
        }
复制代码

免责声明:文章转载自《C#播放器控件的常用方法介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux下测试CPU性能30个高质量并且免费的Android图标【Android Icon素材】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

JQuery 导入导出 Excel

正在做一个小项目,从数据库中查询数据放在HTMLTable中.现在想要从这个table中导出数据来.另外用户需要选择导出的列.使用jQuery的导出插件可以完成这个需求.jQueryPlugintoExportHTMLTables例子:导入插件:[javascript]viewplaincopy˂/scr...

微信小程序----返回上一页刷新或当前页刷新

1.Reload()方法刷新当前页面;2.replace()方法刷新当前页面;3.页面自动刷新当前页面;实现js刷新当前页面的三种方法使用微信小程序--返回上一页刷新或当前页面刷新1.在实现效果之前,您需要了解微信小应用程序的页面生命周期。如果你不太清楚,你可以看到微信小程序——页面生命周期;2.我们可以知道微信小程序页面由五个循环组成:onLoad、onR...

win server2008关闭危险端口445,135,137,138,139的方法

在Windowsserver2008系统上,有两种途经可以禁用本地端口:1、通过Windows防火墙2、通过IP安全策略一、通过Windows防火墙禁用端口:1、点击“控制面板-Windows防火墙”,确保启用了Windows防火墙。重复操作,添加135、137、138、139规则然后在新规则属性中,单击筛选器操作选项卡单击下方的添加,并且不要勾选右侧的使用...

ActiveMQ教程(消息发送和接受)

activemq全部<版本>{版本}</版本>名称为ActiveMqUtilitimportjava。util。日期importorg.apache.activemq.activemq连接//创建链接Connectionconnection=null;61616");...

mongodb 占用内存及解决方法

解决方案是限制Swap的使用:[root@mongodb~]#Sysctl wvm。swap=0查看内存最常用的命令是空闲的:[root@mongodb~]#Free totalused freesharedbuff/cacheavailableEm:78250931925992443Swap:000当新手看到used列中的值太大而Free列中的数值太小时,...

SkyWalking 服务端配置

在安装基于Docker的ElasticSearch时,在为什么需要链接跟踪一章中,我们介绍了几种SkyWalking存储解决方案。官方推荐的解决方案是ElasticSearch,因此我们需要首先安装Elastic搜索。...