javascript 控制media player

  1. 在Web页中嵌入MediaPlayer的方法比较简单,只要用HTML中的可以了,如下所示。
  2. CLASSID="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95"
  3. CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/
  4. nsmp2inf.cab#Version=6,4,5,715"
  5. STANDBY="LoadingMicrosoft?WindowsMedia?Playercomponents..."
  6. TYPE="application/x-oleobject">
  7. 其中ID是对象的名称,当用户在JavaScript要对MediaPlayer进行控制时可以用该对象的名称WMPlay进行访问。CODEBASE指明当用户的浏览器中没有安装Player控件时可以从该URL指定的位置去获取。
  8. 当然在建立Player对象时也可以用来为其指定参数。
  9. 其中"FileName"参数表示MediaPlayer要播放的文件活或流。"ShowControls"表示在播放时是否显示控制条。MediaPlayer的参数很多,我们在此不再一一详述。读者如果需要了解更详细的内容可以参考MediaPlayerSDK中的相关部分。
  10. 如果用户需要对MediaPlayer进行控制可以用JavaScript进行控制。
  11. 在这个例子中,MediaPlayer嵌入在Web页面中,在MediaPlayer右边有一些按钮,利用这些按钮用户可以控制MediaPlayer的播放活动。这些按钮的HTML代码如下:
  12. OnClick="controlType(false)">
  13. Onclick="controlType(true)">
  14. OnClick="displaySize(1)">
  15. Onclick="displaySize(2)">
  16. Onclick="displaySize(0)">
  17. Onclick="PlayClick()">
  18. Onclick="StopClick()">
  19. 从这个例子可以看出当用户单即其中的某个按钮时,它对应的OnClick函数将被调用。在JavaScript函数中,可以直接用WMPlay来控制播放器的活动,比如开始播放,停止播放或占停播放,以及放大缩小等。
  20. 除了可以用动作比如鼠标的动作来对嵌入的MediaPlayer进行控制外,还可以利用事件来对其进行控制。MicrosoftWindowsMediaPlayer支持的事件很多,有普通的鼠标事件,比如鼠标的单击、双击、鼠标的移动、鼠标键的按下与松开等,也有一些是MediaPlayer特有的事件。与流播放有直接关系的事件有:OpenStateChange,PlayStateChange,Buffering,MarkerHit,ScriptCommand等。下面我们对这几个重要的事件做简单地介绍。
  21. 1OpenStateChange事件
  22. OpenStateChange事件表示Player的状态已经发生了改变。MediaPlayer的打开状态有:
  23. 0表示流已经关闭(nsClosed)
  24. 1表示正在装入ASX文件(nsLoadingASX)
  25. 2表示正在装入NSC文件(nsLoadingNSC)
  26. 3表示正在寻找MediaServer(nsLocating)
  27. 4表示正在与MediaServer建立连接(nsConnecting)
  28. 5表示正在打开或侦听流信息(nsOpening)
  29. 6表示流信息已经打开(nsOpen)
  30. 其中MediaPlayer是在中定义的MediaPlayer对象时的名字。
  31. 2PlayStateChange事件
  32. PlayStateChange事件表示MediaPlayer的播放状态已经改变,MediaPlayer可能的状态有:
  33. 0播放已经停止(mpStopped)
  34. 1播放暂停(mpPaused)
  35. 2正在播放(mpPlaying)
  36. 3正在等待流开始(mpWaiting)
  37. 4向前搜索(mpScanForward)
  38. 5向后搜索(mpScanReverse)
  39. 6向前跳跃(mpSkipForward)
  40. 7向后跳跃(mpSkipReverse)
  41. 8流已经关闭(mpClosed)
  42. 用JavaScript处理该事件的方法为:
  43. 3Buffering事件
  44. Buffering事件表示MediaPlayer正在缓冲数据准备播放。在进行流播放之前,MediaPlayer必须要缓冲一定数量的数据之后才开始播放,Buffering事件反映了Player缓冲数据的状况。用JavaScript处理Buffering事件的方法为:
  45. 其中bStart为一个布尔变量,当它为TRUE时表示缓冲正在进行,反之表示缓冲已经结束。
  46. 4ScriptCommand事件
  47. ScriptCommand事件表示MediaPlayer接收到了Script命令,这时用户可以利用对接收到Script命令进行分析以决定采取相应的处理。我们知道利用MediaTools的ASFIndexer工具可以给流添加Script命令,当流播放器Player接收到这些Script命令时会激活这个事件处理方法,于是用户可以在事件处理方法中对Script命令进行处理。处理ScriptCommand的方法是:
  48. 其中sType是Script命令的类型,Script命令的类型有URL,TEXT,EVENT等,用户可以根据Script命令类型的不同做不同的处理。比如,如果是URL命令,我们可以在指定的帧内打开sParam中指定的页面。
  49. 5MarkHit事件
  50. MarkerHit事件同ScritpCommand事件一样,当媒体播放器在ASF流中遇到标记时会激活该事件,用户利用该事件可以知道当前的标记是第几个标记。MarkerHit事件的处理方法是:
  51. 当然,除了支持事件处理之外,做为一个ActiveX对象,MediaPlayer还有很多的属性(Property)和方法(Method)可以供Web页使用。比如用MediaPlayer.MarkerCount属性可以知道在ASF流中到底有多少个标记;利用MediaPlayer.CurrentPosition属性可以知道当前播放位置的时间等等。至于MediaPlayer对象的方法我们在前面已经使用了很多,比如Play(),Pause()等均是MediaPlayer的方法。由于MediaPlayer对象的属性和方法太多,我们不可能在此一一介绍,而只是对几个较为重要的事件处理做了一定的介绍。用户在使用时可以参考MediaPlayerSDK的帮助文档以获取更多的信息。
  52. 本文对MediaService的客户应用程序MediaPlayer的使用,特别是在Web页中的使用做了简单的介绍。作为一个通用的媒体播放器,它还有很多的功能这里没有介绍,要了解一个软件的功能,最好的方法就是使用它。用户如果感兴趣可以从www.windowsmedia.com上去免费下载。
  53. 播放:MediaPlayer.Play()
  54. 暂停:MediaPlayer.Pause()
  55. 定位:MediaPlayer.SetCurrentEntry(lWhichEntry)
  56. MediaPlayer.Next()
  57. MediaPlayer.Previous()
  58. 循环:MediaPlayer.PlayCount=0
  59. 0:theclipplaysrepeatedly
  60. 1:once
  61. 停止:MediaPlayer.Stop()
  62. AllowChangeDisplaySize返回或设置最终用户是否能设置显示尺寸(逻辑型)
  63. AllowScan返回或设置是否允许扫描(逻辑型)
  64. AnimationAtStart返回或设置控件开始播放之前是否先播放一个动画序列(逻辑型)
  65. AudioStream返回或设置音频流的编号(用于多音频流的剪辑,默认为-1)(长整型)
  66. AutoRewind返回或设置媒体文件播放完毕后是否自动回绕(逻辑型)
  67. AutoSize返回或设置是否自动调整控件大小来适应载入的媒体(逻辑型)
  68. AutoStart返回或设置在载入媒体文件之后是否自动开始播放(逻辑型)
  69. Balance返回或设置指定立体声媒体文件的播放声道(-10000为左声道,10000为右声道,0为立体声)(长整型)
  70. Bandwidth返回或设置当前文件的带宽(长整型)
  71. BaseURL返回基本的HTTPURL(字符串)
  72. BufferingCount返回媒体文件回放时缓冲的总时间(长整型)
  73. BufferingProgress返回缓冲完成的百分比(长整型)
  74. BufferingTime返回缓冲的时间(双精度型)
  75. CanPreview返回或设置当前显示的剪辑是能否被预览(逻辑型)
  76. CanScan返回或设置当前文件是否支持快进或快退(逻辑型)
  77. CanSeek返回或设置当前文件是否能搜索并定位到某个时间(逻辑型)
  78. CanSeekToMarkers返回或设置文件是否支持搜索到标签(逻辑型)
  79. CaptioningID返回在标题中显示的帧或控件的名称(字符串)
  80. ChannelDescription返回电台的描述(字符串)
  81. ChannelName返回电台的名称(字符串)
  82. ChannelURL返回电台的元文件的位置(字符串)
  83. ClickToPlay返回或设置是否可以通过点击图像暂停或播放剪辑(逻辑型)
  84. ClientID返回客户端唯一的标识符(字符串)
  85. CodecCount返回文件使用的可安装的codecs的个数(长整型)
  86. ContactAddress返回电台的联系地址(字符串)
  87. ContactEmail返回电台的联系电子邮件地址(字符串)
  88. ContactPhone返回电台的联系电话(字符串)
  89. CreationDate返回剪辑的创建日期(日期型)
  90. CurrentMarker返回或设置当前书签号码(长整型)
  91. CurrentPosition返回或设置剪辑的当前位置(双精度型)
  92. CursorType返回或设置指针类型(长整型)
  93. DefaultFrame返回或设置控件的默认目标Http帧(字符串)
  94. DisplayBackColor返回或设置显示面板的背景色(OLE_COLOR值)
  95. DisplayForeColor返回或设置显示面板的前景色(OLE_COLOR值)
  96. DisplayMode返回或设置显示面板是否用秒或帧的形式显示当前位置(MPDisplayModeConstants值)
  97. DisplaySize返回或设置图像显示窗口的大小(MPDisplaySizeConstant值)
  98. Duration返回或设置剪辑剪辑的播放时间(双精度型)
  99. EnableContextMenu返回或设置是否允许使用上下文菜单(逻辑型)
  100. Enabled返回或设置控件是否可用(逻辑型)
  101. EnableFullScreenControls返回或设置全屏幕控制是否可用(逻辑型)
  102. EnablePositionControls返回或设置位置控制是否可用(逻辑型)
  103. EnableTracker返回或设置搜索栏控制是否可用(逻辑型)
  104. ErrorCode返回当前错误代码(长整型)
  105. ErrorCorrection返回当前剪辑的错误修正类型(长整型)
  106. ErrorDescription返回当前错误的描述(字符串)
  107. FileName返回或设置要播放的剪辑的文件名称(字符串)
  108. HasError返回控件是否发生错误(逻辑型)
  109. HasMultipleItems返回或设置控件是否包含某些多重项目的内容(逻辑型)
  110. ImageSourceHeight返回或设置当前剪辑的原始图像高度(长整型)
  111. ImageSourceWidth返回或设置当前剪辑的原始图像宽度(长整型)
  112. InvokeURLs返回或设置URL是否自动发送请求(逻辑型)
  113. IsBroadcast返回或设置源是否进行广播(逻辑型)
  114. IsDurationValid返回或设置持续时间值是否有效(逻辑型)
  115. Language返回或设置用于本地化语言支持的当前区域语言(长整型)
  116. LostPackets返回丢失的数据包数量(长整型)
  117. MarkerCount返回文件书签的数量(长整型)
  118. Mute返回或设置控件是否播放声音(逻辑型)
  119. OpenState返回控件的内容源状态(长整型)
  120. PlayCount返回或设置一个剪辑播放的次数(长整型)
  121. PlayState返回控件的当前操作状态(长整型)
  122. PreviewMode返回或设置控件是否处在预览模式(逻辑型)
  123. Rate返回或设置回放帧频(双精度型)
  124. ReadyState返回控件是否准备就绪(ReadyStateConstant值)
  125. ReceivedPackets返回已接收到的数据包的数量(长整型)
  126. ReceptionQuality返回最后30秒接收到的数据包的百分比(长整型)
  127. RecoveredPackets返回已转换的数据包的数量(长整型)
  128. SAMIFileName返回或设置closed-captioning文件名(字符串)
  129. SAMILang返回或设置closedcaptioning语言(字符串)
  130. SAMIStyle返回或设置closedcaptioning风格(字符串)
  131. SelectionEnd返回或设置流的结束位置(双精度型)
  132. SelectionStart返回或设置流的起始位置(双精度型)
  133. SendErrorEvents返回或设置控件是否发送错误事件(逻辑型)
  134. SendKeyboardEvents返回或设置控件是否发送键盘事件(逻辑型)
  135. SendMouseClickEvents返回或设置控件是否发送鼠标单击事件(逻辑型)
  136. SendMouseMoveEvents返回或设置控件是否发送鼠标移动事件(逻辑型)
  137. SendOpenStateChangeEvents返回或设置控件是否发送打开状态改变事件(逻辑型)
  138. SendPlayStateChangeEvents返回或设置控件是否发送播放状态改变事件(逻辑型)
  139. SendWarningEvents返回或设置控件是否发送警告事件(逻辑型)
  140. ShowAudioControls返回或设置是否显示音频控制(逻辑型)
  141. ShowCaptioning返回或设置是否显示字幕(逻辑型)
  142. ShowControls返回或设置控制面板是否可见(逻辑型)
  143. ShowDisplay返回或设置是否显示显示面板(逻辑型)
  144. ShowGotoBar返回或设置是否显示跳转栏(逻辑型)
  145. ShowPositionControls返回或设置是否显示位置控制(逻辑型)
  146. ShowStatusBar返回或设置是否显示状态栏(逻辑型)
  147. ShowTracker返回或设置是否显示搜索栏(逻辑型)
  148. SourceLink返回内容文件的路径(字符串)
  149. SourceProtocol返回用于接收数据的协议(长整型)
  150. StreamCount返回媒体帧的数量(长整型)
  151. TransparentAtStart返回或设置在开始播放之前和停止之后控件是否透明(逻辑型)
  152. VideoBorder3D返回或设置视频边框是否显示为3D效果(逻辑型)
  153. VideoBorderColor返回或设置视频边框的颜色(OLE_颜色)
  154. VideoBorderWidth返回或设置视频边框的宽度(长整型)
  155. Volume返回或设置音量(长整型)
  156. Mediaplayer属性和方法
  157. 属性/方法名:说明:
  158. [基本属性] 
  159. URL:String;指定媒体位置,本机或网络地址
  160. uiMode:String;播放器界面模式,可为Full,Mini,None,Invisible
  161. playState:integer;播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
  162. enableContextMenu:Boolean;启用/禁用右键菜单
  163. fullScreen:boolean;是否全屏显示
  164. [controls]wmp.controls//播放器基本控制
  165. controls.play;播放
  166. controls.pause;暂停
  167. controls.stop;停止
  168. controls.currentPosition:double;当前进度
  169. controls.currentPositionString:string;当前进度,字符串格式。如“00:23
  170. controls.fastForward;快进
  171. controls.fastReverse;快退
  172. controls.next;下一曲
  173. controls.previous;上一曲
  174. [settings]wmp.settings//播放器基本设置
  175. settings.volume:integer;音量,0-100
  176. settings.autoStart:Boolean;是否自动播放
  177. settings.mute:Boolean;是否静音
  178. settings.playCount:integer;播放次数
  179. [currentMedia]wmp.currentMedia//当前媒体属性
  180. currentMedia.duration:double;媒体总长度
  181. currentMedia.durationString:string;媒体总长度,字符串格式。如“03:24
  182. currentMedia.getItemInfo(conststring);获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址
  183. currentMedia.setItemInfo(conststring);通过属性名设置媒体信息
  184. currentMedia.name:string;同currentMedia.getItemInfo("Title")
  185. [currentPlaylist]wmp.currentPlaylist//当前播放列表属性
  186. currentPlaylist.count:integer;当前播放列表所包含媒体数
  187. currentPlaylist.Item[integer];获取或设置指定项目媒体信息,其子属性同wmp.currentMedia

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值