首页
诗词
字典
板报
句子
名言
友答
励志
学校
网站地图
JavaScript
Dreamweaver
Fireworks
Flash
ASP
asp.net
PHP
JSP
SEO优化
源码建站
CSS
Web开发
Web前端
JavaScript
vbScript
Ajax
网页设计
跨浏览器开发
高性能WEB开发
Web Service
XML SOAP
当前位置:
首页
>
教程频道
>
网站开发
>
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
?
?
在Web页中嵌入Media?Player的方法比较简单,只要用HTML中的可以了,如下所示。???
CLASSID="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95"???
CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/???
nsmp2inf.cab#Version=6,4,5,715"???
STANDBY="Loading?Microsoft??Windows?Media??Player?components..."???
TYPE="application/x-oleobject">???
其中ID是对象的名称,当用户在JavaScript要对Media?Player进行控制时可以用该对象的名称WMPlay进行访问。CODEBASE指明当用户的浏览器中没有安装Player控件时可以从该URL指定的位置去获取。???
当然在建立Player对象时也可以用来为其指定参数。??
其中"FileName"参数表示Media?Player要播放的文件活或流。"ShowControls"表示在播放时是否显示控制条。Media?Player的参数很多,我们在此不再一一详述。读者如果需要了解更详细的内容可以参考Media?Player?SDK中的相关部分。???
如果用户需要对Media?Player进行控制可以用JavaScript进行控制。???
??
在这个例子中,Media?Player嵌入在Web页面中,在Media?Player右边有一些按钮,利用这些按钮用户可以控制Media?Player的播放活动。这些按钮的HTML代码如下:???
OnClick="controlType(false)">???
Onclick="controlType(true)">???
OnClick="displaySize(1)">???
Onclick="displaySize(2)">???
Onclick="displaySize(0)">???
Onclick="PlayClick()">???
Onclick="StopClick()">???
??
从这个例子可以看出当用户单即其中的某个按钮时,它对应的OnClick函数将被调用。在JavaScript函数中,可以直接用WMPlay来控制播放器的活动,比如开始播放,停止播放或占停播放,以及放大缩小等。???
除了可以用动作比如鼠标的动作来对嵌入的Media?Player进行控制外,还可以利用事件来对其进行控制。Microsoft?Windows?Media?Player?支持的事件很多,有普通的鼠标事件,比如鼠标的单击、双击、鼠标的移动、鼠标键的按下与松开等,也有一些是Media?Player特有的事件。与流播放有直接关系的事件有:OpenStateChange,PlayStateChange,Buffering,MarkerHit,ScriptCommand等。下面我们对这几个重要的事件做简单地介绍。???
1?OpenStateChange?事件???
OpenStateChange?事件表示Player的状态已经发生了改变。Media?Player的打开状态有:???
0?表示流已经关闭(nsClosed)???
1?表示正在装入ASX文件(nsLoadingASX)???
2?表示正在装入NSC文件(nsLoadingNSC)???
3?表示正在寻找Media?Server?(nsLocating)???
4?表示正在与Media?Server建立连接(nsConnecting)???
5?表示正在打开或侦听流信息(nsOpening)???
6?表示流信息已经打开(nsOpen)???
??
其中MediaPlayer是在中定义的Media?Player对象时的名字。???
??
2?PlayStateChange?事件???
PlayStateChange?事件表示Media?Player的播放状态已经改变,Media?Player可能的状态有:???
0?播放已经停止(mpStopped)???
1?播放暂停(mpPaused?)???
2?正在播放(mpPlaying)???
3?正在等待流开始(mpWaiting)???
4?向前搜索(mpScanForward)???
5?向后搜索(mpScanReverse)???
6?向前跳跃(mpSkipForward)???
7?向后跳跃(mpSkipReverse)???
8?流已经关闭(mpClosed)???
用JavaScript处理该事件的方法为:???
??
3?Buffering?事件???
Buffering事件表示Media?Player正在缓冲数据准备播放。在进行流播放之前,Media?Player必须要缓冲一定数量的数据之后才开始播放,Buffering事件反映了Player缓冲数据的状况。用JavaScript处理Buffering事件的方法为:???
其中bStart为一个布尔变量,当它为TRUE时表示缓冲正在进行,反之表示缓冲已经结束。???
??
4?ScriptCommand?事件???
ScriptCommand事件表示Media?Player接收到了Script?命令,这时用户可以利用对接收到Script命令进行分析以决定采取相应的处理。我们知道利用Media?Tools的ASF?Indexer工具可以给流添加Script命令,当流播放器Player接收到这些Script?命令时会激活这个事件处理方法,于是用户可以在事件处理方法中对Script命令进行处理。处理ScriptCommand的方法是:???
其中sType是Script命令的类型,Script命令的类型有URL,TEXT,EVENT等,用户可以根据Script命令类型的不同做不同的处理。比如,如果是URL命令,我们可以在指定的帧内打开sParam中指定的页面。???
??
5?MarkHit?事件???
MarkerHit事件同ScritpCommand事件一样,当媒体播放器在ASF流中遇到标记时会激活该事件,用户利用该事件可以知道当前的标记是第几个标记。MarkerHit事件的处理方法是:???
当然,除了支持事件处理之外,做为一个ActiveX对象,Media?Player还有很多的属性(Property)和方法(Method)可以供Web页使用。比如用MediaPlayer.MarkerCount?属性可以知道在ASF流中到底有多少个标记;利用MediaPlayer.?CurrentPosition属性可以知道当前播放位置的时间等等。至于Media?Player对象的方法我们在前面已经使用了很多,比如Play(),?Pause()等均是Media?Player的方法。由于Media?Player对象的属性和方法太多,我们不可能在此一一介绍,而只是对几个较为重要的事件处理做了一定的介绍。用户在使用时可以参考Media?Player?SDK的帮助文档以获取更多的信息。???
本文对Media?Service的客户应用程序Media?Player的使用,特别是在Web页中的使用做了简单的介绍。作为一个通用的媒体播放器,它还有很多的功能这里没有介绍,要了解一个软件的功能,最好的方法就是使用它。用户如果感兴趣可以从www.windowsmedia.com上去免费下载。???
??
播放:?MediaPlayer.Play()???
暂停:?MediaPlayer.Pause()???
定位:?MediaPlayer.SetCurrentEntry(lWhichEntry)???
??????MediaPlayer.Next()???
??????MediaPlayer.Previous()???
循环:?MediaPlayer.PlayCount?=?0???
0:the?clip?plays?repeatedly???
1:once???
停止:?MediaPlayer.Stop()???
??
AllowChangeDisplaySize?返回或设置最终用户是否能设置显示尺寸(逻辑型)???
AllowScan?返回或设置是否允许扫描(逻辑型)???
AnimationAtStart?返回或设置控件开始播放之前是否先播放一个动画序列(逻辑型)???
AudioStream?返回或设置音频流的编号(用于多音频流的剪辑,默认为-1)(长整型)???
AutoRewind?返回或设置媒体文件播放完毕后是否自动回绕(逻辑型)???
AutoSize?返回或设置是否自动调整控件大小来适应载入的媒体(逻辑型)???
AutoStart?返回或设置在载入媒体文件之后是否自动开始播放(逻辑型)???
Balance?返回或设置指定立体声媒体文件的播放声道(-10000为左声道,10000为右声道,0为立体声)(长整型)???
Bandwidth?返回或设置当前文件的带宽(长整型)???
BaseURL?返回基本的?HTTP?URL(字符串)???
BufferingCount?返回媒体文件回放时缓冲的总时间(长整型)???
BufferingProgress?返回缓冲完成的百分比(长整型)???
BufferingTime?返回缓冲的时间(双精度型)???
CanPreview?返回或设置当前显示的剪辑是能否被预览(逻辑型)???
CanScan?返回或设置当前文件是否支持快进或快退(逻辑型)???
CanSeek?返回或设置当前文件是否能搜索并定位到某个时间(逻辑型)???
CanSeekToMarkers?返回或设置文件是否支持搜索到标签(逻辑型)???
CaptioningID?返回在标题中显示的帧或控件的名称(字符串)???
ChannelDescription?返回电台的描述(字符串)???
ChannelName?返回电台的名称(字符串)???
ChannelURL?返回电台的元文件的位置(字符串)???
ClickToPlay?返回或设置是否可以通过点击图像暂停或播放剪辑(逻辑型)???
ClientID?返回客户端唯一的标识符(字符串)???
CodecCount?返回文件使用的可安装的?codecs?的个数(长整型)???
ContactAddress?返回电台的联系地址(字符串)???
ContactEmail?返回电台的联系电子邮件地址(字符串)???
ContactPhone?返回电台的联系电话(字符串)???
CreationDate?返回剪辑的创建日期(日期型)???
CurrentMarker?返回或设置当前书签号码(长整型)???
CurrentPosition?返回或设置剪辑的当前位置(双精度型)???
CursorType?返回或设置指针类型(长整型)???
DefaultFrame?返回或设置控件的默认目标?Http?帧(字符串)???
DisplayBackColor?返回或设置显示面板的背景色(OLE_COLOR?值)???
DisplayForeColor?返回或设置显示面板的前景色(OLE_COLOR?值)???
DisplayMode?返回或设置显示面板是否用秒或帧的形式显示当前位置(MPDisplayModeConstants?值)???
DisplaySize?返回或设置图像显示窗口的大小(MPDisplaySizeConstant?值)???
Duration?返回或设置剪辑剪辑的播放时间(双精度型)???
EnableContextMenu?返回或设置是否允许使用上下文菜单(逻辑型)???
Enabled?返回或设置控件是否可用(逻辑型)???
EnableFullScreenControls?返回或设置全屏幕控制是否可用(逻辑型)???
EnablePositionControls?返回或设置位置控制是否可用(逻辑型)???
EnableTracker?返回或设置搜索栏控制是否可用(逻辑型)???
ErrorCode?返回当前错误代码(长整型)???
ErrorCorrection?返回当前剪辑的错误修正类型(长整型)???
ErrorDescription?返回当前错误的描述(字符串)???
FileName?返回或设置要播放的剪辑的文件名称(字符串)???
HasError?返回控件是否发生错误(逻辑型)???
HasMultipleItems?返回或设置控件是否包含某些多重项目的内容(逻辑型)???
ImageSourceHeight?返回或设置当前剪辑的原始图像高度(长整型)???
ImageSourceWidth?返回或设置当前剪辑的原始图像宽度(长整型)???
InvokeURLs?返回或设置?URL?是否自动发送请求(逻辑型)???
IsBroadcast?返回或设置源是否进行广播(逻辑型)???
IsDurationValid?返回或设置持续时间值是否有效(逻辑型)???
Language?返回或设置用于本地化语言支持的当前区域语言(长整型)???
LostPackets?返回丢失的数据包数量(长整型)???
MarkerCount?返回文件书签的数量(长整型)???
Mute?返回或设置控件是否播放声音(逻辑型)???
OpenState?返回控件的内容源状态(长整型)???
PlayCount?返回或设置一个剪辑播放的次数(长整型)???
PlayState?返回控件的当前操作状态(长整型)???
PreviewMode?返回或设置控件是否处在预览模式(逻辑型)???
Rate?返回或设置回放帧频(双精度型)???
ReadyState?返回控件是否准备就绪(ReadyStateConstant?值)???
ReceivedPackets?返回已接收到的数据包的数量(长整型)???
ReceptionQuality?返回最后?30?秒接收到的数据包的百分比(长整型)???
RecoveredPackets?返回已转换的数据包的数量(长整型)???
SAMIFileName?返回或设置?closed-captioning?文件名(字符串)???
SAMILang?返回或设置?closed?captioning?语言(字符串)???
SAMIStyle?返回或设置?closed?captioning?风格(字符串)???
SelectionEnd?返回或设置流的结束位置(双精度型)???
SelectionStart?返回或设置流的起始位置(双精度型)???
SendErrorEvents?返回或设置控件是否发送错误事件(逻辑型)???
SendKeyboardEvents?返回或设置控件是否发送键盘事件(逻辑型)???
SendMouseClickEvents?返回或设置控件是否发送鼠标单击事件(逻辑型)???
SendMouseMoveEvents?返回或设置控件是否发送鼠标移动事件(逻辑型)???
SendOpenStateChangeEvents?返回或设置控件是否发送打开状态改变事件(逻辑型)???
SendPlayStateChangeEvents?返回或设置控件是否发送播放状态改变事件(逻辑型)???
SendWarningEvents?返回或设置控件是否发送警告事件(逻辑型)???
ShowAudioControls?返回或设置是否显示音频控制(逻辑型)???
ShowCaptioning?返回或设置是否显示字幕(逻辑型)???
ShowControls?返回或设置控制面板是否可见(逻辑型)???
ShowDisplay?返回或设置是否显示显示面板(逻辑型)???
ShowGotoBar?返回或设置是否显示跳转栏(逻辑型)???
ShowPositionControls?返回或设置是否显示位置控制(逻辑型)???
ShowStatusBar?返回或设置是否显示状态栏(逻辑型)???
ShowTracker?返回或设置是否显示搜索栏(逻辑型)???
SourceLink?返回内容文件的路径(字符串)???
SourceProtocol?返回用于接收数据的协议(长整型)???
StreamCount?返回媒体帧的数量(长整型)???
TransparentAtStart?返回或设置在开始播放之前和停止之后控件是否透明(逻辑型)???
VideoBorder3D?返回或设置视频边框是否显示为?3D?效果(逻辑型)???
VideoBorderColor?返回或设置视频边框的颜色(OLE_颜色)???
VideoBorderWidth?返回或设置视频边框的宽度(长整型)???
Volume?返回或设置音量(长整型)???
??
Mediaplayer属性和方法???
属性/方法名:说明:???
[基本属性]? ???
URL:String;?指定媒体位置,本机或网络地址???
uiMode:String;?播放器界面模式,可为Full,?Mini,?None,?Invisible???
playState:integer;?播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪???
enableContextMenu:Boolean;?启用/禁用右键菜单???
fullScreen:boolean;?是否全屏显示???
[controls]?wmp.controls?//播放器基本控制???
controls.play;?播放???
controls.pause;?暂停???
controls.stop;?停止???
controls.currentPosition:double;?当前进度???
controls.currentPositionString:string;?当前进度,字符串格式。如“00:23”???
controls.fastForward;?快进???
controls.fastReverse;?快退???
controls.next;?下一曲???
controls.previous;?上一曲???
[settings]?wmp.settings?//播放器基本设置???
settings.volume:integer;?音量,0-100???
settings.autoStart:Boolean;?是否自动播放???
settings.mute:Boolean;?是否静音???
settings.playCount:integer;?播放次数???
[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 ?
查看更多
下一篇
本文网址:
https://www.reader8.net/jiaocheng/20120626/1375990.html
读书人精选
热点排行
servlet2.5/jsp2.1的新特性(转载)
js函数包含另一个js的有关问题
不包含某字符串的正则表达式:((?test).)
一个反向引用的有关问题
关于在VS2010里头调试js的方法
ymPrompt.js讯息提示组件
js 日期转换解决思路
初学者问个javascript有关问题 达人
请问关键字鼠标特效有关问题
Firefox跟IE之间7个JavaScript差异