您的位置:首页 > 编程语言 > C#

c#.NET winform 利用windows media player播放视频,循环播放视频

2010-06-23 10:52 1181 查看
c#.NET winform 利用windows media player播放视频,循环播放视频
开发环境:VS2005

原文:http://blog.csdn.net/slimboy123/archive/2010/06/23/5688616.aspx (转载请说明出处)

在C#.NET windows应用程序做视频播放,首先要用到com组件中windows media player,当然你也可以用其它的,这里就以windows media player为例。

一、新建windows应用程序项目,添加vedioForm窗体

二、在com组件中找到windows media player,添加引用

三、代码如下:

public partial class VedioForm : Form
{
private AxWMPLib.AxWindowsMediaPlayer axWindowsMediaPlayer1;
public VedioForm()
{
InitializeComponent();
InitVedio();
}
private void VedioForm_Load(object sender, EventArgs e)
{
InitVedioUrl();
InitEvent();
}
//初始化播放控件
private void InitVedio()
{
this.axWindowsMediaPlayer1 = new AxWMPLib.AxWindowsMediaPlayer();
this.axWindowsMediaPlayer1.Enabled = true;
this.axWindowsMediaPlayer1.Location = new System.Drawing.Point(0, 400);
this.axWindowsMediaPlayer1.Name = "axWindowsMediaPlayer1";
this.axWindowsMediaPlayer1.Size = new System.Drawing.Size(800, 500);
this.axWindowsMediaPlayer1.TabIndex = 2;
this.Controls.Add(this.axWindowsMediaPlayer1);
}
//初始化播放控件的视频文件地址
protected void InitVedioUrl()
{
this.axWindowsMediaPlayer1.URL = @"D:/Vedio/default.wmv";
}

protected void InitEvent()
{
axWindowsMediaPlayer1.StatusChange += new EventHandler(axWindowsMediaPlayer1_StatusChange);
}

//通过控件的状态改变,来实现视频循环播放
protected void axWindowsMediaPlayer1_StatusChange(object sender, EventArgs e)
{
/*  0 Undefined Windows Media Player is in an undefined state.(未定义)
1 Stopped Playback of the current media item is stopped.(停止)
2 Paused Playback of the current media item is paused. When a media item is paused, resuming playback begins from the same location.(停留)
3 Playing The current media item is playing.(播放)
4 ScanForward The current media item is fast forwarding.
5 ScanReverse The current media item is fast rewinding.
6 Buffering The current media item is getting additional data from the server.(转换)
7 Waiting Connection is established, but the server is not sending data. Waiting for session to begin.(暂停)
8 MediaEnded Media item has completed playback. (播放结束)
9 Transitioning Preparing new media item.
10 Ready Ready to begin playing.(准备就绪)
11 Reconnecting Reconnecting to stream.(重新连接)
*/
//判断视频是否已停止播放
if ((int)axWindowsMediaPlayer1.playState == 1)
{
//停顿2秒钟再重新播放
System.Threading.Thread.Sleep(2000);
//重新播放
axWindowsMediaPlayer1.Ctlcontrols.play();
}
}
}


四、OK 了,执行看效果。

以上代码只是实现了单个视频文件循环播放的效果,当然还可以播放一个视频列表,这里就不再赘叙。

以下是关于windows media player的控件详细说明:

[基本属性]

URL:string 可以指定媒体位置

enableContextMenu:Boolean 显示/不显示播放位置的右键菜单

fullScreen:boolean 全屏显示

stretchToFit:boolean 非全屏状态时是否伸展到最佳大小

uMode:string 播放器的模式,full:有下面的控制条; none:只有播放部份没有控制条

playState:integer 当前控件状态,状态变化时会触发OnStatusChange事件

[controls]

可通过WindowsMediaPlayer.controls对播放器进行控制并取得相关的一些信息:

controls.play; 播放

controls.stop; 停止

controls.pause; 暂停

controls.currentPosition:Double 当前播放进度

controls.currentPositionString:string 时间格式的字符串 “0:32″

[currentMedia]

可以通过WindowsMediaPlayer.currentMedia取得当前媒体的信息

currentMedia.duration Double 总长度

currentMedia.durationString 时间格式的字符串 “4:34″

[settings]

可以通过WindowsMediaPlayer.settings对播放器进行设置,包括音量和声道等。

settings.volume:integer 音量 (0-100)

settings.balance:integer 声道,通过它应该可以进行立体声、左声道、右声道的控制。

Media Player Player.playState获取播放状态事件

Value State Description

0 Undefined Windows Media Player is in an undefined state.(未定义)

1 Stopped Playback of the current media item is stopped.(停止)

2 Paused Playback of the current media item is paused. When a media item is paused, resuming playback begins from the same location.(停留)

3 Playing The current media item is playing.(播放)

4 ScanForward The current media item is fast forwarding.

5 ScanReverse The current media item is fast rewinding.

6 Buffering The current media item is getting additional data from the server.(转换)

7 Waiting Connection is established, but the server is not sending data. Waiting for session to begin.(暂停)

8 MediaEnded Media item has completed playback. (播放结束)

9 Transitioning Preparing new media item.

10 Ready Ready to begin playing.(准备就绪)

11 Reconnecting Reconnecting to stream.(重新连接)

原文:http://blog.csdn.net/slimboy123/archive/2010/06/23/5688616.aspx (转载请说明出处)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: