• 1对于视频播放器来说,最重要的功能,莫过于播放视频文件了这就要用到VS自带的控件——Windows Media Player

windows media player

  • 将Windows Media Player(以下简称wmp)控件添加到工具箱中
    1.选择工具箱项
    2.选择com组件项

    3.找到wmp,将其前面打钩即可在工具箱中找到wmp
  • 添加wmp至已创建好的窗体中
  • 下面说一说wmp一些属性
    URL:String——指定媒体位置,本机或网络地址
    uiMode:String——播放器界面模式,可为Full, Mini, None, Invisible(不计大小写)
    playState:int—— 播放状态。这个属性改变时同时引发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”)

  • 当前播放列表属性[currentPlaylist] wmp.currentPlaylist

    currentPlaylist.count:integer; 当前播放列表所包含媒体数
    currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia
    axWindowsMediaPlayer1.currentMedia.sourceURL; //获取正在播放的媒体文件的路径
    axWindowsMediaPlayer1.currentMedia.name; //获取正在播放的媒体文件的名称
    axWindowsMediaPlayer1.Ctlcontrols.Play          播放
    axWindowsMediaPlayer1.Ctlcontrols.Stop          停止
    axWindowsMediaPlayer1.Ctlcontrols.Pause          暂停
    axWindowsMediaPlayer1.Ctlcontrols.PlayCount        文件播放次数
    axWindowsMediaPlayer1.Ctlcontrols.AutoRewind       是否循环播放 (无效)
    axWindowsMediaPlayer1.Ctlcontrols.Balance         声道
    axWindowsMediaPlayer1.Ctlcontrols.Volume         音量
    axWindowsMediaPlayer1.Ctlcontrols.Mute          静音
    axWindowsMediaPlayer1.EnableContextMenu    是否允许在控件上点击鼠标右键时弹出快捷菜单
    axWindowsMediaPlayer1.Ctlcontrols.AnimationAtStart     是否在播放前先播放动画(无效)
    axWindowsMediaPlayer1.Ctlcontrols.ShowControls       是否显示控件工具栏(无效)
    axWindowsMediaPlayer1.Ctlcontrols.ShowAudioControls    是否显示声音控制按钮(无效)
    axWindowsMediaPlayer1.Ctlcontrols.ShowDisplay       是否显示数据文件的相关信息(无效)
    axWindowsMediaPlayer1.Ctlcontrols.ShowGotoBar       是否显示Goto栏(无效)
    axWindowsMediaPlayer1.Ctlcontrols.ShowPositionControls   是否显示位置调节按钮(无效)
    axWindowsMediaPlayer1.Ctlcontrols.ShowStatusBar      是否显示状态栏(无效)
    axWindowsMediaPlayer1.Ctlcontrols.ShowTracker       是否显示进度条(无效)
    axWindowsMediaPlayer1.Ctlcontrols.FastForward        快进
    axWindowsMediaPlayer1.Ctlcontrols.FastReverse        快退
    axWindowsMediaPlayer1.Ctlcontrols.Rate           快进/快退速率
    axWindowsMediaPlayer1.AllowChangeDisplaySize  是否允许自由设置播放图象大小(无效)
    axWindowsMediaPlayer1.DisplaySize       设置播放图象大小(无效)
    1-MpDefaultSize         原始大小
    2-MpHalfSize          原始大小的一半
    3-MpDoubleSize         原始大小的两倍
    4-MpFullScreen         全屏
    5-MpOneSixteenthScreen 屏幕大小的1/16
    6-MpOneFourthScreen       屏幕大小的1/4
    7-MpOneHalfScreen        屏幕大小的1/2
    axWindowsMediaPlayer1.ClickToPlay    是否允许单击播放窗口启动Media Player

    在视频播放之后,可以通过如下方式读取源视频的宽度和高度,然后设置其还原为原始的大小.
    private void ResizeOriginal()
    {
    int intWidth = axWindowsMediaPlayer1.currentMedia.imageSourceWidth;
    int intHeight = axWindowsMediaPlayer1.currentMedia.imageSourceHeight;
    axWindowsMediaPlayer1.Width = intWidth + 2;
    axWindowsMediaPlayer1.Height = intHeight + 2;
    }

  • 注意:

    AxWindowsMediaPlayer1.URL 中URL是表示要播放的文件名,取消了原来的Name属性.
    AxWindowsMediaPlayer1.Ctlcontrols.play()播放,同样还有Pause,Stop等其他属性.
    AxWindowsMediaPlayer1.settings.balance表示媒体播放的声道设置,0表示均衡,-1和1表示左右声道.
    AxWindowsMediaPlayer1.currentMedia.duration 表示要播放的文件的时间长度.可用它获取文件长度.
    AxWindowsMediaPlayer1.Ctlcontrols.currentPosition表示正在播放的文件的当前播放位置,可用这个属性来对媒体文件进行前进后退等设置.如
    AxWindowsMediaPlayer1.Ctlcontrols.currentPosition+1 表示前进1个时间单位.
    AxWindowsMediaPlayer1.settings.rate播放速率,一般乘以16后再显示kbps单位.
    注意:在上面程序中,如果在后面加上一个:
    msgbox(AxWindowsMediaPlayer1.currentMedia.duration.ToString )
    则显示结果很可能为0,因此,这时候很可能获取不到文件的播放时间长度,容易出错。所以在利用的时候可以加一个timer控件:
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    EndPoint = AxWindowsMediaPlayer1.currentMedia.duration
    If EndPoint = 0 Then Exit Sub ‘可能因为媒体文件的打开需要一定时间,这里等待媒体文件的打开
    msgbox(AxWindowsMediaPlayer1.currentMedia.duration.ToString )
    End Sub
    此时msgbox便会显示文件播放长度。

  • Ctlcontrols属性
    Ctlcontrols属性是AxWindowsMediaPlayer的一个重要属性, 此控件中有许多常用成员。
    (1) 方法play
    用于播放多媒体文件,其格式为:
    窗体名.控件名.Ctlcontrols.play()
    如: AxWindowsMediaPlayer1.Ctlcontrols.play() ‘此处缺省窗体名是Me
    (2) 方法pause
    用于暂停正在播放的多媒体文件,其格式为:
    窗体名.控件名.Ctlcontrols.pause()
    如: AxWindowsMediaPlayer1.Ctlcontrols.pause()
    (3) 方法stop
    用于停止正在播放的多媒体文件,其格式为:
    窗体名.控件名.Ctlcontrols.stop()
    如: AxWindowsMediaPlayer1.Ctlcontrols.stop()
    (4) 方法fastforward
    用于将正在播放的多媒体文件快进,其格式为:
    窗体名.控件名.Ctlcontrols.fastforward()
    如: AxWindowsMediaPlayer1.Ctlcontrols.forward()
    (5) 方法fastreverse
    窗体名.控件名.Ctlcontrols.fastreverse()
    如: AxWindowsMediaPlayer1.Ctlcontrols.fastreverse()
  • 属性CurrentPosition
    用于获取多媒体文件当前的播放进度,其值是数值类型,使用格式为:
    窗体名.控件名.Ctlcontrols.currentPosition
    d1 =AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
    其中d1 是一个整型变量。
  • 属性Duration
    用于获取当前多媒体文件的播放的总时间,其值为数值类型,其使用格式为:
    窗体名.控件名.currentMedia.duration
    如:d2 =AxWindowsMediaPlayer1.currentMedia.duration
    其中d2是一个整型变量。

    下面开始制作简易的播放器,用到部分上面的内容

    1.创建项目

    选择windows窗体应用程序,名称为mediaplayer

    2.将form1的name属性改为mediaplayer,text属性改为视频播放器。
    3.添加menustrip,wmp控件。
    4.调整他们之间的相互位置,并设置wmp的anchor属性为Top, Bottom, Left, Right以适应窗体调整时控件的大小及位置。
    5.向menustrip中加入具体内容:
    文件->打开文件->退出;
    播放->播放/暂停->停止->快进->快退->上一曲->下一曲;
    选项->升高音量->降低音量->静音;
    6.向打开文件中加入代码:
    双击打开文件,加入如下代码

        private void 打开文件ToolStripMenuItem_Click(object sender, EventArgs e)
{
using (OpenFileDialog fileDialog = new OpenFileDialog())
{
fileDialog.Filter = "视频文件(*.avi;*.wmv)|*.avi;*.wmv|(All file(*.*)|*.*";
if (fileDialog.ShowDialog() == DialogResult.OK)
{
//axWindowsMediaPlayer1.SizeMode = PictureBoxSizeMode.Zoom;
playpath = fileDialog.FileName;
// 初始化视频集合
directory = Path.GetDirectoryName(playpath);
playArray = player.GetplayCollection(directory);
}
}
axWindowsMediaPlayer1.URL = playpath;
}
     【注意】:
要先定义变量
       string playpath = null;
string directory = null;
List<<string>string> playArray = null;

和线性表

`        public static List<string> GetplayCollection(string path)
{
string[] playarray = Directory.GetFiles(path);
var result = from playstring in playarray
where playstring.EndsWith("wmv", StringComparison.OrdinalIgnoreCase) ||
playstring.EndsWith("avi", StringComparison.OrdinalIgnoreCase)
select playstring;
return result.ToList();
}

7.接下来,向其他menustrip项中分别加入代码如下:

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
} private void 播放/暂停ToolStripMenuItem_Click(object sender, EventArgs e)
{
if ((int)axWindowsMediaPlayer1.playState ==2)
axWindowsMediaPlayer1.Ctlcontrols.play();
else if((int)axWindowsMediaPlayer1.playState==3)
axWindowsMediaPlayer1.Ctlcontrols.pause();
} private void 停止ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.stop();
} private void 快进ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.fastForward();
} private void 快退ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.fastReverse();
} private void 上一曲ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.previous(); } private void 下一曲ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.next();
} private void 升高音量ToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (axWindowsMediaPlayer1.settings.volume <= 90)
{
axWindowsMediaPlayer1.settings.volume += 10;
}
else
{
axWindowsMediaPlayer1.settings.volume = 100;
}
} private void 降低音量ToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (axWindowsMediaPlayer1.settings.volume >= 10)
{
axWindowsMediaPlayer1.settings.volume -= 10;
}
else
{
axWindowsMediaPlayer1.settings.volume = 0;
}
} private void 静音ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.settings.volume = 0;
} private void 属性ToolStripMenuItem1_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.ShowPropertyPages();
} private void 关于ToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.ShowAboutBox();
}
http://blog.csdn.net/qwerty837504957/article/details/48625557
 

C#视频播放器【转】的更多相关文章

  1. Python应用03 使用PyQT制作视频播放器

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载. 最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/ ...

  2. C# VLCPlayer视频播放器(附源码)

    VLCPlayer视频播放器. 支持本地播放,支持网络URL.支持全屏,截图. 基于VLCPlayer. 附带基本代码. 下载地址:http://pan.baidu.com/s/1nvjNvID

  3. 建站技能get(1)— Asp.net MVC快速集成ckplayer网页视频播放器

    故事背景大概是这样的,我厂两年前给山西晋城人民政府做了一个门户网站(地址:http://jccq.cn/),运行了一年多固若金汤,duang的有一天市场部门过来说,新闻管理模块带视频的内容播放不了了. ...

  4. 打造自己的html5视频播放器

    前段时间重新学习了一下html5的video部分,以前只是停留在标签的使用上,这一次决定深入了解相关的API,并运用这些API打造一个简单的视频播放器.所谓“打造自己的”,就是要自己重写video标签 ...

  5. 一款开源免费跨浏览器的视频播放器--videojs使用介绍

    最近项目中的视频功能,需要做到浏览器全兼容,所以之前用html5实现的视频功能就需要进行改造了.在网上翻了个遍,试来试去,在所有的视频播放器中,就数它最实际了.首先我们来看看它的优点: 1.它是开源免 ...

  6. 分享一个基于HTML5实现的视频播放器

    什么是hivideo? 最近一段时间在使用PhoneGap开发一个App应用,App需要播放视频,本想直接使用html5的video,但使用它在全屏播放时不支持横屏播放,只能放弃.最终决定还是自己封装 ...

  7. android视频播放器

    RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetworks公司提交的 ...

  8. C语言基于GTK+Libvlc实现的简易视频播放器(二)

    简易视频播放器-全屏播放 一.课程说明 上一次我们使用gtk+libvlc实现了一个最简单的视频播放器,可以实现点击按钮暂定和停止播放视频,以及同步显 示视频播放进度,但即使作为一个视频播放器,只有这 ...

  9. C语言基于GTK+Libvlc实现的简易视频播放器

    小编心语:现下,各种视频播放软件层出不穷,竞争也越演越烈,不知道大家有木有这个想法,小编有时在想能不能做一款属于自己的视频播放器呢~小编特意去实验楼,整理出了这篇关于如何实现简易视频播放器的博文.简易 ...

  10. 【Linux_Fedora_应用系列】_2_如何安装视频播放器和视频文件解码

    在前面的一篇博文中,我们进行了音乐播放器的安装和解码器的安装.[Linux_Fedora_应用系列]_1_如何安装音乐播放器和mp3解码 这里我们来进行视频播放器的安装.我们还是通过yum方式安装. ...

随机推荐

  1. 二安装Python

    因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先 ...

  2. STL容器 -- Vector

    核心:Vector 是 STL 里的一个向量容器,可以像数组那样进行随机访问,能在尾部插入元素,对于元素的删除和插入可以动态管理内存. 头文件: #include <vector> 构造函 ...

  3. 单纯用JS做的分页插件

    最近公司需要用到分页插件,由于市面上大多都是jQuery的分页插件,而且项目中有自己的工具类,所以说我在工具类中又添加了不依赖jQuery的分页插件,而且分页插件来说对DOM的操作也不是很多,就是用J ...

  4. Ubuntu下查看软件版本及安装位置

    查看软件版本: XXX --version 或 aptitude show xxx 也可用apt-show-versions (要先安装sudo apt-get install apt-show-ve ...

  5. [ZOJ3254] MON 9.2009Secret Code

    A^x = D (mod P) 0 <= x <= M, here M is a given integer. 1 <= A, P < 2^31, 0 <= D < ...

  6. [BZOJ3924][ZJOI2015]幻想乡战略游戏(动态点分治)

    题目描述 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来,更别说和别人打 ...

  7. Android之View / SurfaceView / GLSurfaceView

    Android游戏当中主要的除了控制类外就是显示类View.SurfaceView是从View基类中派生出来的显示类.android游戏开发中常用的三种视图是:view.SurfaceView和GLS ...

  8. PHP -- 8个必备的PHP功能开发

    原文出处:http://www.codeceo.com/8-php-functions.html 做过PHP开发的程序员应该清楚,PHP中有很多内置的功能,掌握了它们,可以帮助你在做PHP开发时更加得 ...

  9. [转]Android:布局实例之模仿QQ登录界面

    Android:布局实例之模仿QQ登录界面 预览图: 准备: 1.找到模仿对象 QQ登陆界面UI下载>>>>> 2.导入工程 3.查看布局结构和使用控件 其对应效果图分布 ...

  10. [转]STRUTS2中的OGNL

    OGNL表达式是(Object-Graph Navigation Language)是对象图形化导航语言.OGNL是一个开源的项目,struts2中默认使用OGNL表达式语言来显示数据.与serlve ...