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

右击工具箱->选择项(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 = @".\data\video";//媒体路径
            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);//设置类表循环播放
        }
时间: 2024-12-12 06:46:07

C#播放器控件的常用方法介绍的相关文章

使用VideoView自定义一个播放器控件

介绍 最近要使用播放器做一个简单的视频播放功能,开始学习VideoView,在横竖屏切换的时候碰到了点麻烦,不过在查阅资料后总算是解决了.在写VideoView播放视频时候定义控制的代码全写在Actvity里了,写完一看我靠代码好乱,于是就写了个自定义的播放器控件,支持指定大小,可以横竖屏切换,手动左右滑动快进快退.好了,下面开始. 效果图 效果图有点卡,我也不知道为啥..... VideoView介绍 这个是我们实现视频播放最主要的控件,详细的介绍大家百度就去看,这里介绍几个常用的方法. 用于

Android上定义播放器控件UniversalVideoView

在Android上播放视频最简单的方法是使用SDK中内置的VideoView,然后加上MediaController来控制视频播放暂停等,但是这样有一个缺点是无法定制自己的控制UI,所以这里提供一个自定义播放控件,它可以设置多种自定义属性(如loading样式,错误视频等),并且很容易在全屏与非全屏之间切换,另外支持Android V2.3及以上系统. 项目地址: https://github.com/linsea/UniversalVideoView 使用方法 完整的使用方法请参考项目里的Sa

C# Winform开发程序调用VLC播放器控件播放视频.

VLC是个好东西,支持的格式多,还无广告,关键还有调用它的播放控件不用安装. 开个文章记录下调用这个控件的流水账,以便以后需要的时候查阅 创建工程 首先新建一个Winform工程. 这里姑且叫做VLC.Test吧 复制文件 在自己的项目目录里创建一个Lib目录,里面再创建一个VLC目录, 在VLC的安装目录能找到这三个 文件/文件夹 复制到自己的项目里 在项目属性里配置生成事件 这一步的效果是在编译程序的时候能自动把库文件复制到输出目录. 毕竟在创建git仓库的时候是要屏蔽输出目录的. xcop

Delphi 媒体播放器控件

樊伟胜 原文地址:https://www.cnblogs.com/fanweisheng/p/11378752.html

拆分器控件Splitcontainer

拆分器控件Splitcontainer ,是一个含有Splitter拆分条的容器,它包含两个面板容器Panel1,Panel2,可以移动拆分条,对面板大小进行控制! 控件学习示例程序! 属性介绍; //拆分条的是否启用禁用bool IsSplitterFixed{get;set;} bool类型,true:不能调节拆分条; false :能够使用拆分条.决定是否可以通过键盘或鼠标来移动拆分器. //拆分器的方向:垂直和水平方向上拆分控件,上下和左右两块面板Orientation Orientat

IOS的segmentedControl(分段器控件)的一些常用属性

#pragma mark - 创建不同的分段器 //初始化方法:传入的数组可以是字符串也可以是UIImage对象的图片数组 UISegmentedControl *mysegmented = [[UISegmentedControl alloc] initWithItems:@[@"左边",@"我是中间",@"右边"]]; mysegmented.frame = CGRectMake(50, 200, kScreenWidth-100, 40);

Gantt Chart Library项目管理控件下载及介绍

Gantt Chart Library是一款专业的项目管理控件,包含了两个与甘特图有关的Windows客户端控件:GanttChartView, ResourceLoadChartView,可以用于Windows应用程序,支持数据绑定,标准的外观和操作自定义设置,拖拉操作本地化.主题风格以及打印支持. 具体功能: 在界面.操作.开发上都和标准的DataGridView相似 支持在表格视图界面里显示自定义列 支持在表格视图里使某一列作为树型结构显示 支持自定义甘特图标尺比例(如预先确定的时间比例:

照片美化和处理控件ColorSwap详细介绍

ColorSwap是一款图形处理工具,可以对任何的数码图片进行颜色处理,并且保持原有图片的光泽和阴影以HSV颜色空间进行先进的图像处理,使用该工具不仅可以极其容易地改变色调.饱和度等,还可以使用标记执行对象分离. 具体功能: 可以对图片进行多种颜色的着色 支持从图片提取对象 对照片进行美化 对图片某部分进行高亮显示 如果您拥有数码相机,并且相对照出的照片进行处理,那么该控件是您最好的选择 如果您在网上看到一张图片,想对其进行颜色修改,或者是截取某一部分,那么该工具是您最好的选择 支持对图片进行添

DropMaster VCL 控件的集合介绍及下载

DropMaster 是4个原生 VCL 控件的集合,在 Delphi 和 C++Builder 中使用.虽然包含在 Delphi 和 C++Builder 中的 VCL 组件允许同一程序内窗口之间的拖放,DropMaster 允许开发者加入程序间拖放的支持.该拖放可以在开发者的新程序和已存在程序(例如 Microsoft Office 套件.web 浏览器等等)之间,或在两个自定义程序之间. 4个 DropMaster 组件是: TDMTextSourceTDMTextSource 处理从你的