实例116 windows media player详细用法

[基本属性] 

 

  • 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")

[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 Sub ResizeOriginal()
        Dim intWidth As Integer = AxWindowsMediaPlayer1.currentMedia.imageSourceWidth
        Dim intHeight As Integer = AxWindowsMediaPlayer1.currentMedia.imageSourceHeight
        AxWindowsMediaPlayer1.Width = intWidth + 2
        AxWindowsMediaPlayer1.Height = intHeight + 2
 End Sub

打开媒体文件并播放:

     Dim filePath As String
         With Me.OpenFileDialog1
             .Title = "打开语音文件"
             .CheckPathExists = True
             .CheckFileExists = True
             .Multiselect = False
             .Filter = "mp3文件(*.mp3)|*.mp3|所有文件(*.*)|*.*"
             If .ShowDialog = DialogResult.Cancel Then
                 Exit Sub
             End If
             filePath = .FileName
         End With
         Me.Text = "播放 " & filePath
         AxWindowsMediaPlayer1.URL = filePath
         Try
             Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
         Catch ex As Exception
             MsgBox("对不起,不能播放此格式语音文件", MsgBoxStyle.OKOnly, "播放")
             Exit Sub
        End Try

注意:

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()
6. 属性CurrentPosition
用于获取多媒体文件当前的播放进度,其值是数值类型,使用格式为:
窗体名.控件名.Ctlcontrols.currentPosition
d1 =AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
其中d1 是一个整型变量。
7. 属性Duration
用于获取当前多媒体文件的播放的总时间,其值为数值类型,其使用格式为:
窗体名.控件名.currentMedia.duration
如:d2 =AxWindowsMediaPlayer1.currentMedia.duration
其中d2是一个整型变量。

使用WMP的常见问题:

一、升级wmp后,再拖windows media player控件至窗体出错的问题(至今没解决,应当是修改工程序文件,用文本编辑器)

二、播放rmvb/rm等非官方格式文件要先双击文件再点播放按钮,而不能直接播放的问题,并弹出消息框:Windows Media Player下载文件遇到问题。有关帮助信息请单击“Web帮助”。消息下面两个按钮:关闭、Web帮助。我没有找到出现这个问题的官方说明。我个人意 见,这是因为wmp默认只播能播放官方指定的几种类型的媒体。如果不是,wmp会试图下载对应的解码器来播放。而这个下载过程失败了,所以弹出这个消息 框。wmp好像没有去判断这个解码器是否已经存在。但是,如果你再点播放的话,又能播放,这是什么原因呢?应当是wmp在这次会试图搜索本机上的解码器以 图播放媒体。怎样解决这个点两次鼠标的问题呢?如下:

先设置属性:wmp.settings.enableErrorDialogs = false;事实上这个属性默认就是false。不用设置。

private void wmp_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
         //如果已播放完毕就播放下一个文件
         if ((WMPLib.WMPPlayState)e.newState == WMPLib.WMPPlayState.wmppsReady) wmp.Ctlcontrols.play();
}  

三、怎样获得一个媒体文件中的信息,并且修改媒体的一些信息?

  有办法:AxWindowsMediaPlayer.newMedia(filename),它会创建一个IWMPMedia的实例。用它的setItemInfo就成了。至于有哪些信息可供设置,可去msdn中查,里面列举了所有相关信息。


四、IWMPPlayList是不是鸡肋????????
确实是好大的一块鸡肋!!!!!!!!!!!


五、播放器控件有几个组成部分,可有隐藏其中相关部分的方法?

媒体播放器包括如下元素:
Video Display Panel:视频显示面板;
Video Border:视频边框;
Closed Captioning Display Panel;字幕显示面板;
Track Bar;搜索栏;
Control Bar with Audio and Position Controls:带有声音和位置控制的控制栏;
Go To Bar:转到栏;
Display Panel:显示面板;
Status Bar:状态栏;

就是这么几个部分,网上有资料说控件提供方法控制它们显示与否,但是我在sdk中并没有找到它们。唯一可以粗略控制它们的就是uiMode属性。它的取值前面有。

六、控件的网络设置,如设置代理、缓冲次数、缓冲时间等信息在哪设置?

  AxWindowsMediaPlayer.netWork。它是IWMPNetWork的实例。

七、像暴风有字幕相关信息的设置,wmp控件有这个功能吗?

当然有。就是AxWindowsMediaPlayer.closedCaption。它是IWMPClosedCaption的实例。

以上是转载,下面是个简单应用,已经做了一个功能全的,还有点问题,调好再上。

Public Class Form1
    Dim strFileName

    Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
        Dim strFileName As String
        Dim res As DialogResult
        With Me.OpenFileDialog1
            .Title = "打开"
            .CheckFileExists = True
            .CheckPathExists = True
            .Multiselect = True
            .Filter = _
                "视频文件(*.dat;*.avi;*.mp3;*.asf;*.mpg)" & _
                "|*.dat;*.mp3;*.avi;*.asf;*.mpg" & _
                "|音频文件(*.mp3,*.wav;*.mid;*.wma)" & _
                "|*.mp3,*.wav;*.mid;*.wma" & _
                "|所有文件(*.*)" & _
                "|*.*"
        End With
        res = Me.OpenFileDialog1.ShowDialog
        strFileName = Me.OpenFileDialog1.FileName
        If Len(strFileName) = 0 Or res = DialogResult.Cancel Then
            Exit Sub
        Else
            Me.AxWindowsMediaPlayer1.URL = strFileName

        End If
    End Sub

    Private Sub btnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlay.Click
        Dim strBtnText As String
        strBtnText = Me.btnPlay.Text
        Try
            If strBtnText.Equals("播放") = True Then
                Me.btnPlay.Text = "暂停"
                AxWindowsMediaPlayer1.Ctlcontrols.pause()
            Else
                Me.btnPlay.Text = "播放"
                Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
        Me.Close()
    End Sub
End Class

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows Media Player万能解码包,让你只用操作系统自带的Windows Media Player播放器,可以播放除WMP自身支持的格式外,还能播放mp4、3gp、rm、rmvb等等目前流行的几乎所有格式流媒体(包括real流媒体)。 深度WMP解码包2008新春贺岁版 1.只需使用系统自带的WMP一个播放器即能播遍天下! 2.支持播放目前流行的所有格式(绝不夸张)的本地媒体及网络在线流媒体(包括real流媒体)! 理论上让你只用操作系统自带的Windows Media Player播放器,可以播放除WMP自身支持的格式外,还能播放以下格式ape、flac、aac、wv、mp4、m4a、m4b、m4p、m4v、mp4v、3gp、3g2、rm、ra、ram、rmvb、rp、rpm、rt、mov、qt、mkv、mka、mks、ac3、dts、lpcm、flv、ogg、ogm、ofr、ofs、mpc、mpp、mp 、tta、scm、smv、ts、tp、csf、sdp文件。 带VSFilter外挂字幕 VSFilter 是 VOBSUB 新版的名字。它是一个外挂字幕的程序,是用来播放 DivX 格式影片必备的显示字幕工具。通常可以使用的播放器有Windows Media Player,RealPlayerMedia Player Classic等。因为VobSub制作生成的为点阵格式字幕,相比于OCR生成的字幕,它可以正确显示任何特殊字符而无须校正。 使用方法: 将所有文件复制 %windows%system32 文件夹下,然后在 开始-运行 对话框中输入 regsvr32 vsfilter.dll 即可。 如果VobSub安装正确,并且能显示字幕,就是播放器的问题了。那MPC来说,确认查看菜单下-〉选项-〉输出-〉dirctshow视频的选项 为VMR9(无转换) 。 确定,重起播放器。 这两部设置正确的话就应该能看到双字幕了。 然后查看菜单下-〉选项-〉字幕-默认样式 可以调整一种字幕的位置 右下角绿色小箭头 右键选择 drictVobsub 可以调节第二字幕位置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值