C# WMP 视频播放

1. 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);//设置类表循环播放
        }

2. C#调用WMP播放一个文件夹的文件

//播放列表
WMPLib.IWMPPlaylist playlist = null;
playlist = MediaPlayer.playlistCollection.newPlaylist("palylist");

//播放列表添加项 , 而且从刚添加的项开始播放playlist.appendItem(MediaPlayer.newItem(file_address));
MediaPlayer.currentPlaylist = playlist;
//oldCount是添加之前的数量,添加之后playlist.Item[oldCount]即为添加的第一项
MediaPlayer.Ctlcontrols.currentItem = playlist.Item[oldCount];

PlayMusic()
//当前播放项 属性
//title:标题 , 是mp3文件里面内嵌的信息SourceURL : 文件地址
MediaPlayer.currentMedia.getItemInfo("title");

当前项的总时间:
MediaPlayer.currentMedia.duration  //double类型
MediaPlayer.currentMedia.durationString  //string类型,是格式化好的几分几秒

当前进度:
MediaPlayer.Ctlcontrol.currentPosition //double类型
MediaPlayer.Ctlcontrol.currentPositionString //string类型,是格式化好的几分几秒

//mediaPlayer控制播放的,全在Ctlcontrol里面

3. C# winform从右下角弹窗

/// <summary>
/// 窗体动画函数    注意:要引用System.Runtime.InteropServices;
/// </summary>
/// <param name="hwnd">指定产生动画的窗口的句柄</param>
/// <param name="dwTime">指定动画持续的时间</param>
/// <param name="dwFlags">指定动画类型,可以是一个或多个标志的组合。</param>
/// <returns></returns>
      [DllImport("user32")]
      private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
      //下面是可用的常量,根据不同的动画效果声明自己需要的
      private const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
      private const int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
      private const int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
      private const int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志
      private const int AW_CENTER = 0x0010;//若使用了AW_HIDE标志,则使窗口向内重叠;否则向外扩展
      private const int AW_HIDE = 0x10000;//隐藏窗口
      private const int AW_ACTIVE = 0x20000;//激活窗口,在使用了AW_HIDE标志后不要使用这个标志
      private const int AW_SLIDE = 0x40000;//使用滑动类型动画效果,默认为滚动动画类型,当使用AW_CENTER标志时,这个标志就被忽略
      private const int AW_BLEND = 0x80000;//使用淡入淡出效果  

      private void FrmMsg_Load(object sender, EventArgs e)
      {
          int x = Screen.PrimaryScreen.WorkingArea.Right - this.Width;
          int y = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height;
          this.Location = new Point(x, y);//设置窗体在屏幕右下角显示
          AnimateWindow(this.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE);
      }
      private void FrmMsg_FormClosing(object sender, FormClosingEventArgs e)
      {
          AnimateWindow(this.Handle, 1000, AW_BLEND | AW_HIDE);
      }

  

时间: 2025-01-01 20:57:34

C# WMP 视频播放的相关文章

在扩展模式下,双屏视频播放时所遇到的几个常见问题的专业解答

婚庆现场管理系统软件(或活动现场双屏管理系统软件)已经内置了WMP视频播放器控件,可以满足一般的视频播放场合.如果不满意视频等媒体播放效果,可在右上方点击按钮[启动PotPlayer],采用PotPlayer播放器进行专业的视频等媒体的扩展双屏播放,如下图所示: 然后在PotPlayer上,点出下面的菜单,再点击[选项]命令: 然后,完成下面的设置工作. 1.如何在播放器中,设置扩展播放模式? 全屏设置/主全屏显示设备:Display2 2.如何使视频播放时,没有黑边并且全屏充满? 高宽比/处理

OpenCV实现基于图像内容检索--视频播放(上)

最近要交个小作业,恰好刚开了博客园的博客,就想着把这个记下来当是做点笔记)=.=(,做的小作业的题目是基于图像内容的内容检索,主要是包括OpenCV和使用ActiveX插件两种方法来播放,这部分就写关于使用控件来实现视频播放的内容吧. [可能这几篇文章只是应用型的小作业,水平可能适合初学者看看,大牛略过就行] 开发环境: Win7+VS2012+OpenCV 1.首先,打开VS2012,文件-->新建-->项目-->MFC应用程序,输入项目"名称"为Video,点击&

Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处。用来指定播放器 1 2. &lt;object&gt; 标签用于包含对象,比如图像、音

Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处.用来指定播放器 1 2. <object> 标签用于包含对象,比如图像.音频.视频.Java applets.ActiveX.PDF 以及 Flash. 1 3. <p>----readone 2 4. ---wmp  最新版(支持wmp12) 2 5. --pps (不能使用) 3 6. --qktm 3 7. --vlc 3 1. Classid的用处.用来

rhel6安装smplayer,mplayer视频播放器

1.首先去下载一个optinal的包,里面有smplayer与mplayer所需的各种依赖包.我的网盘下载地址为: 2.给你下载的包配置yum源 vim /etc/yum.repos.d/yum.repo 我的配置文件如下: [option] name=option baseurl=file://iso/optional                   这是我的optional目录,根据自己的实际路径配置即可 gpgcheck=0 3.卸载掉与smplayer相冲突的包 首先可以使用rpm

免费视频播放器videojs中文教程

Video.js是一款web视频播放器,支持html5和flash两种播放方式.更多关于video.js的介绍,可以访问官方网站介绍,我之前也写过一篇关于video.js的使用心得,有兴趣的可以点这里 , 阅读的人数还蛮多的,有些热心的读者甚至还给过我小额打赏,钱虽不多,但是很感动.最几天又收到几位网友的私信,问一些关于videojs使用方面的问题.我自己都不记得videojs长什么模样了,出于别人对我的信任,又回头看了一遍上一篇文章,还是2014年的时候写的,如今videojs的版本已经更新到

移动端HTML5&lt;video&gt;视频播放优化实践

转帖: http://www.xuanfengge.com/html5-video-play.html 如果侵权请告知删除 遇到的挑战 移动端HTML5使用原生<video>标签播放视频,要做到两个基本原则,速度快和体验佳,先来分析一下这两个问题. 下载速度 以一个8s短视频为例,wifi环境下提供的高清视频达到1000kbps,文件大小大约1MB:非wifi环境下提供的低码率视频是500kbps左右,文件大小大约500KB:参考QzoneTouch多普勒测速,2g网络的平均速度是14KB/s

100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 简介 流程图 simplest_ffmpeg_player标准版代码 simplest_ffmpeg_player_suSU版代码 结果 FFMPEG相关学习资料 补充问题 ===================================================== 最简单的基于FFmp

ios 视频播放代码Demo

方法一: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //利用自带MPMoviePlayerController来实现视频播放,首先要在 项目中导入MediaPlayer.Framework框架包. //在试图控制器中导入#import "MediaPlayer/MPMoviePlayerController.h" UIImageView *i

十亿级视频播放技术优化揭密

本文为转载文章,文章来自:王辉|十亿级视频播放技术优化揭密 QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦.北京.东京.纽约.圣保罗.上海.旧金山召开.自 2007年 3月份首次举办以来,已经有超万名高级技术人员参加过QCon大会.QCon内容源于实践并面向社区,演讲嘉宾依据热点话题,面向 5年以上工作经验的技术团队负责人.架构师.工程总监.高级开发人员分享技术创新和最佳实践. 4月18日性能优化面面观专题会议上,腾讯研发总监王辉以“十亿级视频播放技术优化揭秘”为主题,用QQ空间的日均