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);
}
C# WMP 视频播放的更多相关文章
- C#视频播放器【转】
1对于视频播放器来说,最重要的功能,莫过于播放视频文件了这就要用到VS自带的控件——Windows Media Player windows media player 将Windows Media P ...
- Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处。用来指定播放器 1 2. <object> 标签用于包含对象,比如图像、音
Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处.用来指定播放器 1 2. <object> 标签用于包含对象,比如 ...
- Python应用03 使用PyQT制作视频播放器
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载. 最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/ ...
- video.js--很赞的H5视频播放库
video.js是一款很流行的html5视频播放插件.很适合在移动端播放视频(比如微信网页),功能强大,且支持降级到flash,兼容ie8.官网:http://videojs.com/ git& ...
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
--iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...
- C# VLCPlayer视频播放器(附源码)
VLCPlayer视频播放器. 支持本地播放,支持网络URL.支持全屏,截图. 基于VLCPlayer. 附带基本代码. 下载地址:http://pan.baidu.com/s/1nvjNvID
- FFmpeg滤镜实现区域视频增强 及 D3D实现视频播放区的拉大缩小
1.区域视频增强 FFmpeg滤镜功能十分强大,用滤镜可以实现视频的区域增强功能. 用eq滤镜就可以实现亮度.对比度.饱和度等的常用视频增强功能. 推荐两篇写得不错的博文: (1)ffmpeg综合应用 ...
- video.js-H5视频播放库
video.js是一款很流行的html5视频播放插件.很适合在移动端播放视频(比如微信网页),功能强大,且支持降级到flash,兼容ie8.官网:http://videojs.com/ git& ...
- libc++abi.dylib`__cxa_throw: 视频播放时异常
这两天研究视频播放,集成RTMP视频出现的异常,刚好看到一篇博客,楼主使用[AVAudioPlayer Play]时出现了异常...记录下来: 由于xcode中设置了当所有异常出现时的断点,,解决办法 ...
随机推荐
- Python执行Linux系统命令方法
Python执行Linux系统命令的4种方法 (1) os.system 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 复制代码代码如下: system(command) -> ...
- Post with HttpClient4
转载:http://www.cnblogs.com/luxiaoxun/p/6165237.html 作者:阿凡卢 出处:http://www.cnblogs.com/luxiaoxun/ HttpC ...
- vue结合element-ui 的select 全选问题
下拉列表多选 问题 通过操作 所有来进行全选 全不选问题 element-ui 中 select 记录下自己最近使用element-ui 中的 select多选问题 在element中默认是指单纯多选 ...
- JSP和JS的区别
从本科毕业设计开始就一直困扰我,jsp和js这两者的区别,一直处于迷糊状态,也没有搞清楚.今天就简单的介绍下两者的区别. 1.JSP全称是java server page JS全称是javaSc ...
- flowable DmnEngine和DmnEngineConfiguration
一.DmnEngineConfiguration创建实例 DmnEngineConfiguration 提供了7个公共的静态方法,用于创建自身实例. 其中5个是使用spring的机制加载配置文件. 另 ...
- 《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
RHS语法 使用说明 RHS是满足LHS条件之后进行后续处理部分的统称,该部分包含要执行的操作的列表信息.RHS主要用于处理结果,因此不建议在此部分再进行业务判断.如果必须要业务判断需要考虑规则设计的 ...
- OkHttp之BridgeInterceptor简单分析
在< Okhttp源码简单解析(一) >这篇博客简单分析了Okhttp请求的执行流程,通过该篇博客我们知道OkHttp的核心网络请求中内置"拦截器"发挥了重大作用:本篇 ...
- 【Spring实战】Spring注解配置工作原理源码解析
一.背景知识 在[Spring实战]Spring容器初始化完成后执行初始化数据方法一文中说要分析其实现原理,于是就从源码中寻找答案,看源码容易跑偏,因此应当有个主线,或者带着问题.目标去看,这样才能最 ...
- python 多维list声明时的小问题
a=[[]]*3 a Out[18]: [[], [], []] a[0].append(1) a Out[20]: [[1], [1], [1]] b=[[] for _ in range(3)] ...
- 测试实战经验之checklist篇20140905
我们测试中,在各个环节应该有自己的一个checklis来帮助我们梳理我们要做什么,该做什么,以下是我的一个小总结: 1.在测试前我们需要做的: 2.在拿到测试包后我们该做的 3.测试通过后我们该做的 ...