首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

[转]用JavaScript js 统制 Media Player 流媒体

2012-06-26 
[转]用JavaScript js 控制 Media Player 流媒体转自:http://blog.csdn.net/IBM_hoojo/article/details/565

[转]用JavaScript js 控制 Media Player 流媒体

转自:http://blog.csdn.net/IBM_hoojo/article/details/5658181

?

?

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

热点排行