MediaPlayer的事件

在Web页中嵌入Media Player的方法比较简单,只要用HTML中的<Object></Object>可以了,如下所示。

<OBJECT ID="WMPlay" WIDTH=320 HEIGHT=240
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">
</OBJECT>

其中ID是对象的名称,当用户在JavaScript要对Media Player进行控制时可以用该对象的名称WMPlay进行访问。CODEBASE指明当用户的浏览器中没有安装Player控件时可以从该URL指定的位置去获取。
当然在建立Player对象时也可以用<PARAM >来为其指定参数。如下所示:

<PARAM NAME="FileName" VALUE="C:ASFRootWelcome.asf">
<PARAM NAME="ShowControls" VALUE="False">
<PARAM NAME="AutoRewind" VALUE="True">
<PARAM NAME="AutoStart" VALUE="False">

其中"FileName"参数表示Media Player要播放的文件活或流。"ShowControls"表示在播放时是否显示控制条。Media Player的参数很多,我们在此不再一一详述。读者如果需要了解更详细的内容可以参考Media Player SDK中的相关部分。
如果用户需要对Media Player进行控制可以用JavaScript进行控制。

在这个例子中,Media Player嵌入在Web页面中,在Media Player右边有一些按钮,利用这些按钮用户可以控制Media Player的播放活动。这些按钮的HTML代码如下:

<form name="myform">
<input type="button" width="15" value="No Controls " name="NoControls"
OnClick="controlType(false)">
<input type="button" width="15" value="All Controls" name="Full"
Onclick="controlType(true)">
<input type="button" width="15" value=" Small " name="Small"
OnClick="displaySize(1)">
<input type="button" value=" Large " name="Large"
Onclick="displaySize(2)">
<input type="button" width="15" value=" Normal " name="Normal"
Onclick="displaySize(0)">
<input type="button" width="15" value=" Play " name="Play"
Onclick="PlayClick()">
<input type="button" width="15" value=" Stop " name="Stop"
Onclick="StopClick()">
</form>

相应的JavaScript代码为:

<script language="javascript">
<!–
var g_Browser = navigator.appName;
function controlType (setting)
{
if (g_Browser == "Netscape")
document.WMPlay.SetShowControls(setting);
else
document.WMPlay.ShowControls = setting;
}
function displaySize (setting)
{
if (g_Browser == "Netscape")
document.WMPlay.SetDisplaySize(setting);
else
document.WMPlay.DisplaySize = setting;
}
function PlayClick ()
{
document.WMPlay.Play();
}
function StopClick ()
{
document.WMPlay.Stop();
if (g_Browser == "Netscape")
document.WMPlay.SetCurrentPosition(0);
else
document.WMPlay.CurrentPosition = 0;
}
function PauseClick ()
{
document.WMPlay.Pause();
}
function PlayPauseClick ()
{
var state;
if (g_Browser == "Netscape")
state = document.WMPlay.GetPlayState();
else
state = document.WMPlay.PlayState;
if (state == 0)
document.WMPlay.Play();
else if (state == 1)
document.WMPlay.Play();
else if (state == 2)
document.WMPlay.Pause();

}
//–>
</script>

从这个例子可以看出当用户单即其中的某个按钮时,它对应的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)

用JavaScript处理OpenStateChange事件的格式如下:
<SCRIPT FOR="MediaPlayer" EVENT="OpenStateChange(lOldState, lNewState)"
LANGUAGE="JScript">
//insert script commands//
</SCRIPT>

其中MediaPlayer是在<OBJECT></OBJECT>中定义的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处理该事件的方法为:

<SCRIPT FOR="MediaPlayer" EVENT="PlayStateChange(lOldState, lNewState)"
LANGUAGE="JScript">
//insert script commands//
</SCRIPT>

 

3 Buffering 事件
Buffering事件表示Media Player正在缓冲数据准备播放。在进行流播放之前,Media Player必须要缓冲一定数量的数据之后才开始播放,Buffering事件反映了Player缓冲数据的状况。用JavaScript处理Buffering事件的方法为:

<SCRIPT FOR="MediaPlayer" EVENT="Buffering(bStart)" LANGUAGE="JScript">
//insert script commands//
</SCRIPT>

其中bStart为一个布尔变量,当它为TRUE时表示缓冲正在进行,反之表示缓冲已经结束。

4 ScriptCommand 事件
ScriptCommand事件表示Media Player接收到了Script 命令,这时用户可以利用对接收到Script命令进行分析以决定采取相应的处理。我们知道利用Media Tools的ASF Indexer工具可以给流添加Script命令,当流播放器Player接收到这些Script 命令时会激活这个事件处理方法,于是用户可以在事件处理方法中对Script命令进行处理。处理ScriptCommand的方法是:

<SCRIPT FOR="MediaPlayer" EVENT="ScriptCommand(sType, sParam)"
LANGUAGE="JScript">
//insert script commands//
</SCRIPT>

其中sType是Script命令的类型,Script命令的类型有URL,TEXT,EVENT等,用户可以根据Script命令类型的不同做不同的处理。比如,如果是URL命令,我们可以在指定的帧内打开sParam中指定的页面。

5 MarkHit 事件
MarkerHit事件同ScritpCommand事件一样,当媒体播放器在ASF流中遇到标记时会激活该事件,用户利用该事件可以知道当前的标记是第几个标记。MarkerHit事件的处理方法是:

<SCRIPT FOR="MediaPlayer" EVENT="MarkerHit(lMarkerNum)" LANGUAGE="JScript">
//insert script commands//
</SCRIPT>

当然,除了支持事件处理之外,做为一个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上去免费下载。

js控制MediaPlayer播放器循环播放

没想过要用这个东西,但群里有人问,这个地址也是群里的朋友贴出来的,仔细想想这个东西也有应用的场景,比如歌词的控制。能够得到播放时间,就能够控制歌词的显示了。估计那些用JS做的播放器大致都是这样的吧?猜测而已

内容如下:http://roln.cn/archives/80

<!–播放器 开始–>
<object id=”Exobud” style=”width: 273px; height: 64px” type=”application/x-oleobject”
classid=”CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6″>
<param name=”URL” value=”"/>
<param name=”rate” value=”1″/>
<param name=”balance” value=”0″/>
<param name=”currentPosition” value=”0″/>
<param name=”defaultFrame” value=”"/>
<param name=”playCount” value=”1″/>
<param name=”autoStart” value=”-1″/>
<param name=”currentMarker” value=”0″/>
<param name=”invokeURLs” value=”-1″/>
<param name=”baseURL” value=”"/>
<param name=”volume” value=”80″/>
<param name=”mute” value=”0″/>
<param name=”uiMode” value=”full”/>
<param name=”stretchToFit” value=”-1″/>
<param name=”windowlessVideo” value=”0″/>
<param name=”enabled” value=”-1″/>
<param name=”enableContextMenu” value=”0″/>
<param name=”fullScreen” value=”0″/>
<param name=”SAMIStyle” value=”"/>
<param name=”SAMILang” value=”"/>
<param name=”SAMIFilename” value=”"/>
<param name=”captioningID” value=”"/>
<param name=”enableErrorDialogs” value=”0″/>
<param name=”_cx” value=”7223″/>
<param name=”_cy” value=”1693″/>
</object> <!–播放器 结束–>
1 单项播放很简单,这里粗略的说一下
通过网页传参在后台cs页面绑定一个变量
html
<param name=”URL” value=”<% = Url%>”/>
cs
public string Url;
Url = 从数据库中读取
2 让播放器播放多首歌曲并循环播放呢
思路就是建一个播放列表,然后通过js来控件.

第一种方法 (此方法最终行不通)
建立一个数组相当于播放列表alist(假设这是用户选择歌曲后的结果)

js
var num = 0
function Onload(){
var Exobud = document.getElementById(”Exobud”);
Exobud.URL = alist[num];
Exobud.controls.play();
num ++;
}
通过PlayStateChange监听播放状态 ,8表示播放结束
<script for=”Exobud” EVENT=”PlayStateChange(stats)”>
if(stats == 8 )
Exobud.URL = alist[num];
Exobud.controls.play();
//alert(Exobud.URL);
num ++
</script>
到此播放正常,当播放下一首歌的时候就定住了.非要手动去点播放.不知道是何原因?
在网上查,有一仁兄弟好像解决过这问题,说是放第二首歌的时候,仍然是在第一首歌的播放状态下,所以就一直是停的.
解决办法,就是每首歌只播放一次,但不知道改那里.播放器参数中每首歌是设的播放一次.
另一种办法就是加一个alert(Exobud.URL);这样就可以自动播放,但总弄个弹窗不好吧.
到现在还没弄明白是么回事.如有人知道请留言跟贴,帮我解决一哈.
第二种方法.现已解决.能正常使用. 思路就是用setTimeout()不停的循环,然后控件播放列表的索引得到值来改变URL

先建立一个播放列表
假设用户所选的歌曲参数已传过来
播放列表如下
<select name=”SongList” size=”5″ >
OnDblClick=”player();”>
<option value=”songs/001.mp3″>001</option>
<option value=”songs/002.wma”>002</option>
<option value=”songs/003.WMV”>003</option>
<option value=”songs/004.mp3″>004</option>
<option value=”songs/005.wma”>005</option>
</select>
同时设置几个按钮
<a href=”#” onclick=”javascript:play();”>on</a>
<a href=”#” onclick=”javascript:Last_OneOK();”>last</a>
<a href=”#” onclick=”javascript:Next_OneOK();”>next</a>

js
<script language=”JavaScript”>
//var server=’http://localhost/music/’;
var SongList = document.getElementById(”SongList”);
var Exobud = document.getElementById(”Exobud”);
var TotalSongs = SongList.options.length;
function play()
{
SongList.options[0].selected=true;
player();
}
function player(){
if(SongList.selectedIndex < 0) alert(’系统错误,请选择您要播放的曲目!’);
else{
var url;
url = SongList.options[SongList.selectedIndex].value;
Exobud.URL=url;
//alert(TotalSongs);
Exobud.controls.play();
showTLab();
return;
}
}

function showTLab(){
if(Exobud.playState == 1)
Next_OneOK();
setTimeout(”showTLab()”, 1000);
}

function Next_OneOK(){
if(SongList.selectedIndex >= 0){
if(SongList.selectedIndex < TotalSongs-1){
SongList.options[SongList.selectedIndex + 1].selected = true;
player();
}else{
SongList.options[0].selected = true;
player();
}
}
}
function Last_OneOK(){
if((SongList.selectedIndex > 0) && (SongList.selectedIndex < TotalSongs)){
SongList.options[SongList.selectedIndex – 1].selected = true;
player();
}
}
</script>

这样问题就解决了.
注音乐文件都是我本地的

附上media player的一些控制方法

player.controls.play(); 播放
player.controls.stop(); 停止
player.controls.pause(); 暂停
player.controls.currentPosition 返回播放文件的当前时间位置(以秒为单位)
player.controls.currentPositionString 时间格式的字符串 “0:32″
player.currentMedia.duration 返回播放文件的总长度(以秒为单位)
player.currentMedia.durationString 时间格式的字符串 “4:34″
player.settings.volume 音量 (0-100)
player.settings.balance 声道,通过它应该可以进行立体声、左声道、右声道的控制。但对应的取值尚不清楚。
player.settings.mute = s 静音(s取值为true和false)
player.closedCaption.CaptioningID 网页中出现字幕的容器的ID
player.closedCaption.SAMIFileName 字幕文件地址
player.playState 返回播放器状态( 3:正在播放,2:暂停1:已停止)


相关内容: 网页音乐播放器

function get( lyrics ){

var l= lyrics;

var reg_soundname =/\[ti:(.+?)\]/i;

var reg_singer=/\[ar:(.+?)\]/i;

var reg_CD =/\[al:(.+?)\]/i;

var reg_maker =/\[(by:.+?)\]/i;

var arr_soundname = l.match(reg_soundname);
var arr_singer = l.match(reg_singer);
var arr_CD= l.match(reg_CD);
var arr_maker = l.match(reg_maker);

var info= " ";
if (arr_soundname != null)
{
info += ":" + arr_soundname[1] + " ";
}
if (arr_singer != null)
{
info += ":" + arr_singer[1] + " ";
}
if (arr_CD != null)
{
info += ":" + arr_CD[1] + " ";
}
if (arr_maker != null)
{
info += arr_maker[1] + " ";
}

var reg_take =/\[\d\d:\d\d\.\d\d\]*(\s)*(\S)+/g; //

var arr_lyrics = l.match(reg_take);

var reg_replacetime =/(\[\d\d:\d\d\.\d\d\])+/g;

var reg_gettimes =/(\[\d\d:\d\d\.\d\d\])/g;
var reg_readtime =/\[(\d\d):(\d\d\.\d\d)\]/;

var reg_dis =/ $/;

var arr_splitedLyrics = new Array();

var arr_info = [0, info];
arr_splitedLyrics.push(arr_info);
for ( ly= 0; ly < arr_lyrics.length; ly++)
{

var arr_tmptime= arr_lyrics[ly].match(reg_gettimes);

// alert("arr_lyrics[ly]="+arr_lyrics[ly]);
// alert("arr_tmptime="+arr_tmptime);
var lyy = arr_lyrics[ly].replace(reg_replacetime, "");

for ( i= 0; i < arr_tmptime.length; i++)
{

var arr_single= new Array();

var t = arr_tmptime[i];
// alert("t="+t);
var min = t.substring(1,3);

var sec = t.substring(4,t.length-1);
//alert("sec="+sec);
var time = Number(min) * 60 + Number(sec);
// alert("time="+time);
arr_single[0] = time;

// if (!reg_dis.test(lyy))
// {
// lyy += " ";
// }
arr_single[1] = lyy;

arr_splitedLyrics.push(arr_single);
}

arr_splitedLyrics.sort(function(a, b){
return a[0]-b[0];
}
;
}

return arr_splitedLyrics;
}

function get( lyrics ){

var l= lyrics;

var reg_soundname =/\[ti:(.+?)\]/i;

var reg_singer=/\[ar:(.+?)\]/i;

var reg_CD =/\[al:(.+?)\]/i;

var reg_maker =/\[(by:.+?)\]/i;

var arr_soundname = l.match(reg_soundname);
var arr_singer = l.match(reg_singer);
var arr_CD= l.match(reg_CD);
var arr_maker = l.match(reg_maker);

var info= " ";
if (arr_soundname != null)
{
info += ":" + arr_soundname[1] + " ";
}
if (arr_singer != null)
{
info += ":" + arr_singer[1] + " ";
}
if (arr_CD != null)
{
info += ":" + arr_CD[1] + " ";
}
if (arr_maker != null)
{
info += arr_maker[1] + " ";
}

var reg_take =/\[\d\d:\d\d\.\d\d\]*(\s)*(\S)+/g; //

var arr_lyrics = l.match(reg_take);

var reg_replacetime =/(\[\d\d:\d\d\.\d\d\])+/g;

var reg_gettimes =/(\[\d\d:\d\d\.\d\d\])/g;
var reg_readtime =/\[(\d\d):(\d\d\.\d\d)\]/;

var reg_dis =/ $/;

var arr_splitedLyrics = new Array();

var arr_info = [0, info];
arr_splitedLyrics.push(arr_info);
for ( ly= 0; ly < arr_lyrics.length; ly++)
{

var arr_tmptime= arr_lyrics[ly].match(reg_gettimes);

// alert("arr_lyrics[ly]="+arr_lyrics[ly]);
// alert("arr_tmptime="+arr_tmptime);
var lyy = arr_lyrics[ly].replace(reg_replacetime, "");

for ( i= 0; i < arr_tmptime.length; i++)
{

var arr_single= new Array();

var t = arr_tmptime[i];
// alert("t="+t);
var min = t.substring(1,3);

var sec = t.substring(4,t.length-1);
//alert("sec="+sec);
var time = Number(min) * 60 + Number(sec);
// alert("time="+time);
arr_single[0] = time;

// if (!reg_dis.test(lyy))
// {
// lyy += " ";
// }
arr_single[1] = lyy;

arr_splitedLyrics.push(arr_single);
}

arr_splitedLyrics.sort(function(a, b){
return a[0]-b[0];
}
);
}

return arr_splitedLyrics;
}

html代码

<script type="text/javascript" src="tt.js"></script>
<script type="text/javascript" src="jquery-latest.js"></script>
<script type="text/javascript" src="uft8.js"></script>

<div align="center">

<object classid = "clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" id="player" width = "250" height = "200">
<param name = "url" value = "冰雨.mp3" target="_blank" >参数 url 定义播放媒体的路径。
<!–是否自动播放–>
<param NAME="Balance" VALUE="0"> <SCRIPT LANGUAGE="JavaScript">
</SCRIPT>
<!–调整左右声道平衡,同上面旧播放器代码–>
<param name="enabled" value="-1">
<!–播放器是否可人为控制–>
<param NAME="EnableContextMenu" VALUE="-1">
<param name="defaultFrame" value="2">
<PARAM NAME="AutoStart" value="-1">
<param name="SAMIFilename" value="ll">
<param name="ShowStatusBar" value="0">
</object>
</div>
<div>
<a href="#" id="next" >下一首歌</a>
<a href="#" id="p">上一首歌</a>
<input type="checkbox" id="ck">循环播放
时间 <input type="text" id="playerinfo">
</div>

<!–显示歌词–>
<div id="geci">

</div>
<a href="#" id="showLs" >查看歌曲</a>
<div>
<select name="select1" size="5" id="s" >
<option value="1" selected > 朋友</option>
<option value="2" > 你好吗</option>
</select>
</div>

<div id="lcdiv">
<select name="ly" size="10" id="lc">
</select>
</div>

<script type="text/javascript">
player.closedCaption.SAMIFileName = "C:\\3.smi";
var num=0;//控制歌曲的下标
</SCRIPT>
//监听播放器的事件
<SCRIPT event="playStateChange(star)" for="player" LANGUAGE="JScript">
//当播放下一首时同步播放列表的歌曲名

if( star==8 ){

num=num+1;

if(num>=s.options.length){num=0}
s.options[num].selected=true;
}

</SCRIPT>

<SCRIPT FOR = player EVENT = buffering(Start)>

if(Start==false){ setInterval(updatetime() ,1000);}

</SCRIPT>

<script type="text/javascript">
//显示播放时间
setInterval(updatetime,1000);
function updatetime()
{
$("#playerinfo").val( player.controls.currentPositionString + " | " + player.currentMedia.durationString);
}
//监听循环的次数
$("#ck").click(function (){

if(ck.checked==true){
player.settings.setMode("loop",true)

}else{

player.settings.setMode("loop",false)
}

});
//播放用户从播放列表中选中的歌曲
$("#s").click(function (){

num=this.selectedIndex;
player.controls.playItem(player.currentPlaylist.item(num));

});

//播放下一首歌
$("#next").click( function (){

player.controls.next();
num=num+1;
if(num>=s.options.length){num=0;
player.controls.playItem(player.currentPlaylist.item(num));
}
s.options[num].selected=true;

});

//播放上一首歌
$("#p").click( function (){
num=num-1;
if(num<0){
num=s.options.length-1;
player.controls.playItem(player.currentPlaylist.item(num));

}
s.options[num].selected=true;

});

//生成歌词的数组(从隐藏域中提取歌词的字符串)
$("#geci").hide();
$("#lcdiv").hide();
var ly="";
var arr_lyrics;
var j=0;
$("#showLs").click(function (){
var html = $.ajax({
url:"http://localhost:8080/music/lyrics.html",
async: false
}).responseText;

$("#geci").html(html);
arr_lyrics=get($("#geci").html());
for( i=0;i<arr_lyrics.length;i++){
ly+="<option >"+arr_lyrics[i][1]+"</option>";

}
ly=ly.substring(2,ly.length);

$("#lc").html(ly);

$("#lc").attr({size:arr_lyrics.length});

$("#lcdiv").show("slow");
setInterval(playLyrics,3000);

});

//歌词与歌曲的同步

function playLyrics (){
var playTime= player.controls.currentPositionString;

var min =playTime.substring(0,2);

var sec = playTime.substring(3,playTime.length);

var p_time = Number(min) * 60 + Number(sec);

for(i=0;i<lc.options.size-1;i++ ){

if( p_time>= arr_lyrics[i][0]&&p_time<arr_lyrics[i+1][0]){
j=i;

break;

}

}

lc.options[j].selected=true;
alert(parseInt(lc.style.top)-1);

};
</script>

<script type="text/javascript" src="tt.js"></script>
<script type="text/javascript" src="jquery-latest.js"></script>
<script type="text/javascript" src="uft8.js"></script>

<div align="center">

<object classid = "clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" id="player" width = "250" height = "200">
<param name = "url" value = "冰雨.mp3" target="_blank" >参数 url 定义播放媒体的路径。
<!–是否自动播放–>
<param NAME="Balance" VALUE="0"> <SCRIPT LANGUAGE="JavaScript">
</SCRIPT>
<!–调整左右声道平衡,同上面旧播放器代码–>
<param name="enabled" value="-1">
<!–播放器是否可人为控制–>
<param NAME="EnableContextMenu" VALUE="-1">
<param name="defaultFrame" value="2">
<PARAM NAME="AutoStart" value="-1">
<param name="SAMIFilename" value="ll">
<param name="ShowStatusBar" value="0">

</object>

</div>
<div>
<a href="#" id="next" >下一首歌</a>
<a href="#" id="p">上一首歌</a>
<input type="checkbox" id="ck">循环播放
时间 <input type="text" id="playerinfo">
</div>

<!–显示歌词–>
<div id="geci">

</div>
<a href="#" id="showLs" >查看歌曲</a>
<div>
<select name="select1" size="5" id="s" >
<option value="1" selected > 朋友</option>
<option value="2" > 你好吗</option>
</select>
</div>

<div id="lcdiv">
<select name="ly" size="10" id="lc">
</select>
</div>

<script type="text/javascript">
player.closedCaption.SAMIFileName = "C:\\3.smi";
var num=0;//控制歌曲的下标
</SCRIPT>
//监听播放器的事件
<SCRIPT event="playStateChange(star)" for="player" LANGUAGE="JScript">
//当播放下一首时同步播放列表的歌曲名

if( star==8 ){

num=num+1;

if(num>=s.options.length){num=0}
s.options[num].selected=true;
}

</SCRIPT>

<SCRIPT FOR = player EVENT = buffering(Start)>

if(Start==false){ setInterval(updatetime() ,1000);}

</SCRIPT>

<script type="text/javascript">

//显示播放时间
setInterval(updatetime,1000);
function updatetime()
{
$("#playerinfo").val( player.controls.currentPositionString + " | " + player.currentMedia.durationString);
}
//监听循环的次数
$("#ck").click(function (){

if(ck.checked==true){
player.settings.setMode("loop",true)

}else{

player.settings.setMode("loop",false)
}

});
//播放用户从播放列表中选中的歌曲
$("#s").click(function (){

num=this.selectedIndex;
player.controls.playItem(player.currentPlaylist.item(num));

});

//播放下一首歌
$("#next").click( function (){

player.controls.next();
num=num+1;
if(num>=s.options.length){num=0;
player.controls.playItem(player.currentPlaylist.item(num));
}
s.options[num].selected=true;

});

//播放上一首歌
$("#p").click( function (){
num=num-1;
if(num<0){
num=s.options.length-1;
player.controls.playItem(player.currentPlaylist.item(num));

}
s.options[num].selected=true;

});

//生成歌词的数组(从隐藏域中提取歌词的字符串)
$("#geci").hide();
$("#lcdiv").hide();
var ly="";
var arr_lyrics;
var j=0;
$("#showLs").click(function (){
var html = $.ajax({
url:"http://localhost:8080/music/lyrics.html",
async: false
}).responseText;

$("#geci").html(html);
arr_lyrics=get($("#geci").html());
for( i=0;i<arr_lyrics.length;i++){
ly+="<option >"+arr_lyrics[i][1]+"</option>";

}
ly=ly.substring(2,ly.length);

$("#lc").html(ly);

$("#lc").attr({size:arr_lyrics.length});

$("#lcdiv").show("slow");
setInterval(playLyrics,3000);

});

//歌词与歌曲的同步

function playLyrics (){
var playTime= player.controls.currentPositionString;

var min =playTime.substring(0,2);

var sec = playTime.substring(3,playTime.length);

var p_time = Number(min) * 60 + Number(sec);

for(i=0;i<lc.options.size-1;i++ ){

if( p_time>= arr_lyrics[i][0]&&p_time<arr_lyrics[i+1][0]){
j=i;

break;

}

}

lc.options[j].selected=true;
alert(parseInt(lc.style.top)-1);

};

</script>

lyrics.html
<meta http-equiv="content-type" content="text/html; charset=utf-8">

<body>
[ti:让我忘了你]
[ar:沈世爱]
[al:半杯苦咖啡]
[by:bzmtv.com]

[03:53.24][01:53.08][00:01.60]沈世爱 – 让我忘了你
[03:58.98][01:59.16][00:09.85]www.50004.com
[02:35.66][00:39.31]
[02:37.23][00:40.27]当我想忘记你 紧紧闭上双眼
[02:42.96][00:46.02]想着一定会有人代替你的容颜
[02:48.88][00:51.91]我不会再想念 慢慢睁开双眼
[02:54.68][00:57.77]泪水已经模糊了我的视线
[03:00.27][01:03.24]在我忘记你之前 仿佛看见你的脸
[03:06.12][01:09.48]轰轰烈烈的故事 平淡无奇的结局
[03:11.96][01:15.14]我不想再有期盼 你给我一点光芒
[03:18.12][01:21.15]游荡在整个城市的两端
[03:23.66][01:26.80]在夜深人静的时侯 看着窗外的月光
[03:29.47][01:32.51]莫名的孤独和寂寞 映在回忆的路上
[03:35.34][01:38.39]你已经渐渐的离去 消失了像风一样
[03:41.19][01:44.20]每次当我走得累了 幻想着有你在身旁
[03:51.88][01:51.86]

</body>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<body>
[ti:让我忘了你]
[ar:沈世爱]
[al:半杯苦咖啡]
[by:bzmtv.com]

[03:53.24][01:53.08][00:01.60]沈世爱 – 让我忘了你
[03:58.98][01:59.16][00:09.85]www.50004.com
[02:35.66][00:39.31]
[02:37.23][00:40.27]当我想忘记你 紧紧闭上双眼
[02:42.96][00:46.02]想着一定会有人代替你的容颜
[02:48.88][00:51.91]我不会再想念 慢慢睁开双眼
[02:54.68][00:57.77]泪水已经模糊了我的视线
[03:00.27][01:03.24]在我忘记你之前 仿佛看见你的脸
[03:06.12][01:09.48]轰轰烈烈的故事 平淡无奇的结局
[03:11.96][01:15.14]我不想再有期盼 你给我一点光芒
[03:18.12][01:21.15]游荡在整个城市的两端
[03:23.66][01:26.80]在夜深人静的时侯 看着窗外的月光
[03:29.47][01:32.51]莫名的孤独和寂寞 映在回忆的路上
[03:35.34][01:38.39]你已经渐渐的离去 消失了像风一样
[03:41.19][01:44.20]每次当我走得累了 幻想着有你在身旁
[03:51.88][01:51.86]

</body>

播放列表的代码

Javascript代码

<SCRIPT language="JavaScript" type="text/JavaScript" >

//生成播放列表playList
var playlist= player.playlistCollection.newPlaylist("New");
//生成播放项
var m = player.newMedia("1.mp3");
//添加歌曲到播放列表
playlist.appendItem(m);
//设置当前的播放器播放的歌曲列表
player.currentPlaylist = playlist;

</SCRIPT>

<SCRIPT language="JavaScript" type="text/JavaScript" >

//生成播放列表playList
var playlist= player.playlistCollection.newPlaylist("New");
//生成播放项
var m = player.newMedia("1.mp3");
//添加歌曲到播放列表
playlist.appendItem(m);
//设置当前的播放器播放的歌曲列表
player.currentPlaylist = playlist;

</SCRIPT>

js控制MediaPlayer播放器

其实用js来做一个音乐播放器很容易,因为mediaplayer提供了一系列的接口来对网页嵌入的播放器进行控制。下面简单的介绍一下:

在网页内插入播放器的代码为:

<object id="player" height="64" width="260" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param NAME="AutoStart" VALUE="-1">
<!–是否自动播放–>
<param NAME="Balance" VALUE="0">
<!–调整左右声道平衡,同上面旧播放器代码–>
<param name="enabled" value="-1">
<!–播放器是否可人为控制–>
<param NAME="EnableContextMenu" VALUE="-1">
<!–是否启用上下文菜单–>
<param NAME="url" value="/blog/1.wma">
<!–播放的文件地址–>
<param NAME="PlayCount" VALUE="1">
<!–播放次数控制,为整数–>
<param name="rate" value="1">
<!–播放速率控制,1为正常,允许小数,1.0-2.0–>
<param name="currentPosition" value="0">
<!–控件设置:当前位置–>
<param name="currentMarker" value="0">
<!–控件设置:当前标记–>
<param name="defaultFrame" value="">
<!–显示默认框架–>
<param name="invokeURLs" value="0">
<!–脚本命令设置:是否调用URL–>
<param name="baseURL" value="">
<!–脚本命令设置:被调用的URL–>
<param name="stretchToFit" value="0">
<!–是否按比例伸展–>
<param name="volume" value="50">
<!–默认声音大小0%-100%,50则为50%–>
<param name="mute" value="0">
<!–是否静音–>
<param name="uiMode" value="mini">
<!–播放器显示模式:Full显示全部;mini最简化;None不显示播放控制,只显示视频窗口;invisible全部不显示–>
<param name="windowlessVideo" value="0">
<!–如果是0可以允许全屏,否则只能在窗口中查看–>
<param name="fullScreen" value="0">
<!–开始播放是否自动全屏–>
<param name="enableErrorDialogs" value="-1">
<!–是否启用错误提示报告–>
<param name="SAMIStyle" value>
<!–SAMI样式–>
<param name="SAMILang" value>
<!–SAMI语言–>
<param name="SAMIFilename" value>
<!–字幕ID–>
</object>

下面是一些常用的方法和属性:

//基本属性
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
enableContextMenu:Boolean; 启用/禁用右键菜单(也是简单的防盗链方法)
fullScreen:boolean; 是否全屏显示

//播放器控制属性
controls.play; 播放
controls.pause; 暂停
controls.stop; 停止
controls.currentPosition:double; 当前进度
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23”
controls.fastForward; 快进
controls.fastReverse; 快退
controls.next; 下一曲
controls.previous; 上一曲
注: 上一曲和下一曲属性一般不能使用,因为这种功能是对一个播放列表气作用的,而对于新版本的播放器,js脚本一般没有权限去新建和修改播放列表的。只能自己去设计一个播放列表,自己去修改url属性去选曲。

//播放器基本属性
settings.volume:integer; 音量,0-100
settings.autoStart:Boolean; 是否自动播放
settings.mute:Boolean; 是否静音
settings.playCount:integer; 播放次数

//当前播放媒体的属性
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

//最后是一些很少用到的参数和属性
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 返回或设置音量(长整型)

—————更新部分

embed标签用法

embed
(一)、基本语法:
embed src=url
说明: embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等,
Netscape及新版的IE 都支持。url为音频或视频文件及其路径,可以是相对路径或绝对路径。
示例: <embed src="your.mid">

(二)、属性设置:
1、自动播放:
语法: autostart=true、false
说明: 该属性规定音频或视频文件是否在下载完之后就自动播放。
true: 音乐文件在下载完之后自动播放;
false: 音乐文件在下载完之后不自动播放。
示例: <embed src="your.mid" autostart=true>
<embed src="your.mid" autostart=false>

2、循环播放:
语法: loop=正整数、true、false
说明: 该属性规定音频或视频文件是否循环及循环次数。
属性值为正整数值时,音频或视频文件的循环次数与正整数值相同;
属性值为true时,音频或视频文件循环;
属性值为false时,音频或视频文件不循环。
示例: <embed src="your.mid" autostart=true loop=2>
<embed src="your.mid" autostart=true loop=true>
<embed src="your.mid" autostart=true loop=false>

3、面板显示:
语法: hidden=ture、no
说明: 该属性规定控制面板是否显示,默认值为no。
ture: 隐藏面板;
no: 显示面板。
示例: <embed src="your.mid" hidden=ture>
          <embed src="your.mid" hidden=no>

4、开始时间:
语法: starttime=mm:ss(分: 秒)
说明: 该属性规定音频或视频文件开始播放的时间。未定义则从文件开头播放。
示例: <embed src="your.mid" starttime="00:10">

5、音量大小:
语法: volume=0-100之间的整数
说明: 该属性规定音频或视频文件的音量大小。未定义则使用系统本身的设定。
示例: <embed src="your.mid" volume="10">

6、容器属性:
语法: height=# width=#
说明: 取值为正整数或百分数,单位为像素。该属性规定控制面板的高度和宽度。
height: 控制面板的高度;
width: 控制面板的宽度。
示例: <embed src="your.mid" height=200 width=200>

7、容器单位:
语法: units=pixels、en
说明: 该属性指定高和宽的单位为pixels或en。
示例: <embed src="your.mid" units="pixels" height=200 width=200>
<embed src="your.mid" units="en" height=200 width=200>

8、外观设置:
语法: controls=console、smallconsole、playbutton、pausebutton、stopbutton、
volumelever 说明: 该属性规定控制面板的外观。默认值是console。
console: 一般正常面板;
smallconsole: 较小的面板;
playbutton: 只显示播放按钮;
pausebutton: 只显示暂停按钮;
stopbutton: 只显示停止按钮;
volumelever: 只显示音量调节按钮。
示例: <embed src="your.mid" controls=smallconsole>
          <embed src="your.mid" controls=volumelever>

9、对象名称:
语法: name=#
说明: #为对象的名称。该属性给对象取名,以便其他对象利用。
示例: <embed src="your.mid" name="sound1">

10、说明文字:
语法: title=#
说明: #为说明的文字。该属性规定音频或视频文件的说明文字。
示例: <embed src="your.mid" title="第一首歌">

11、前景色和背景色:
语法: palette=color|color
说明: 该属性表示嵌入的音频或视频文件的前景色和背景色,第一个值为前景色,第二个值为背景色,中间用 | 隔开。color可以是RGB色(RRGGBB)也可以是颜色名,还可以是transparent
(透明)。
示例: <embed src="your.mid" palette="red|black">

12、对齐方式:
语法: align=top、bottom、center、baseline、 left、right、texttop、middle、absmiddle、absbottom
说明: 该属性规定控制面板和当前行中的对象的对齐方式。
center: 控制面板居中;
left: 控制面板居左;
right: 控制面板居右;
top: 控制面板的顶部与当前行中的最高对象的顶部对齐;
bottom: 控制面板的底部与当前行中的对象的基线对齐;
baseline: 控制面板的底部与文本的基线对齐;
texttop: 控制面板的顶部与当前行中的最高的文字顶部对齐;
middle: 控制面板的中间与当前行的基线对齐;
absmiddle: 控制面板的中间与当前文本或对象的中间对齐;
absbottom: 控制面板的底部与文字的底部对齐。
示例: <embed src="your.mid" align=top>
          <embed src="your.mid" align=center>

media player控制

player.controls.play(); 播放
player.controls.stop(); 停止
player.controls.pause(); 暂停
player.controls.currentPosition 返回播放文件的当前时间位置(以秒为单位)
player.controls.currentPositionString 时间格式的字符串 "0:32"
player.currentMedia.duration 返回播放文件的总长度(以秒为单位)
player.currentMedia.durationString 时间格式的字符串 "4:34"
player.settings.volume 音量 (0-100)
player.settings.balance 声道(通过它应该可以进行立体声、左声道、右声道的控制,最左-9640,最右9640。)
player.settings.mute = s 静音(s取值为true和false)
player.closedCaption.CaptioningID 网页中出现字幕的容器的ID
player.closedCaption.SAMIFileName 字幕文件地址
player.playState 返回播放器状态( 3: 正在播放,2: 暂停1: 已停止)

例子:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script>
var music_src = new Array();
music_src[0] = "music/1.mid";
music_src[1] = "music/2.mid";
music_src[2] = "music/3.mid";
music_src[3] = "music/4.mid";
music_src[4] = "music/5.mid";
var array_index = Math.random() * 5;
var music_index = Math.floor(array_index);
function p_music()
{
var starts = wind_meb.playState;
if(starts == 1)
{
music_index++;
alert(music_index);
wind_meb.url = music_src[music_index];
wind_meb.controls.play();
}
timer = setTimeout("p_music()",3000);
}
</script>
</head>
<body onLoad="p_music()">
<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" id="wind_meb">
<param value="1" name="ShowStatusBar">
<param name="url" value="music/1.mid">
</object>
</body>
</html>

======================================================

REAL PLAYER控制

player.DoPlay() 播放
player.DoPause() 暂停
player.DoStop() 停止
player.GetLength() 返回播放文件的总长度(以毫秒为单位)
player.GetPosition() 返回播放文件的当前时间位置(以毫秒为单位)
player.GetPlayState() 返回播放器状态(0:停止,1:连接,2:缓冲,3:播放,4:暂停,5:寻找)
player.SetPosition(n) 时间位置跳到n的地方(n取值以毫秒为单位)
player.SetVolume(n) 设置音量(n取值为0到100)
player.SetMute(s) 静音(s取值为true和false)
player.SetFullScreen() 全屏
player.setSource() 设置文件来源

js控制MediaPlayer播放器

其实用js来做一个音乐播放器很容易,因为mediaplayer提供了一系列的接口来对网页嵌入的播放器进行控制。下面简单的介绍一下:

在网页内插入播放器的代码为:

<object id="player" height="64" width="260" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param NAME="AutoStart" VALUE="-1">
<!–是否自动播放–>
<param NAME="Balance" VALUE="0">
<!–调整左右声道平衡,同上面旧播放器代码–>
<param name="enabled" value="-1">
<!–播放器是否可人为控制–>
<param NAME="EnableContextMenu" VALUE="-1">
<!–是否启用上下文菜单–>
<param NAME="url" value="/blog/1.wma">
<!–播放的文件地址–>
<param NAME="PlayCount" VALUE="1">
<!–播放次数控制,为整数–>
<param name="rate" value="1">
<!–播放速率控制,1为正常,允许小数,1.0-2.0–>
<param name="currentPosition" value="0">
<!–控件设置:当前位置–>
<param name="currentMarker" value="0">
<!–控件设置:当前标记–>
<param name="defaultFrame" value="">
<!–显示默认框架–>
<param name="invokeURLs" value="0">
<!–脚本命令设置:是否调用URL–>
<param name="baseURL" value="">
<!–脚本命令设置:被调用的URL–>
<param name="stretchToFit" value="0">
<!–是否按比例伸展–>
<param name="volume" value="50">
<!–默认声音大小0%-100%,50则为50%–>
<param name="mute" value="0">
<!–是否静音–>
<param name="uiMode" value="mini">
<!–播放器显示模式:Full显示全部;mini最简化;None不显示播放控制,只显示视频窗口;invisible全部不显示–>
<param name="windowlessVideo" value="0">
<!–如果是0可以允许全屏,否则只能在窗口中查看–>
<param name="fullScreen" value="0">
<!–开始播放是否自动全屏–>
<param name="enableErrorDialogs" value="-1">
<!–是否启用错误提示报告–>
<param name="SAMIStyle" value>
<!–SAMI样式–>
<param name="SAMILang" value>
<!–SAMI语言–>
<param name="SAMIFilename" value>
<!–字幕ID–>
</object>

下面是一些常用的方法和属性:

//基本属性
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
enableContextMenu:Boolean; 启用/禁用右键菜单(也是简单的防盗链方法)
fullScreen:boolean; 是否全屏显示

//播放器控制属性
controls.play; 播放
controls.pause; 暂停
controls.stop; 停止
controls.currentPosition:double; 当前进度
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23”
controls.fastForward; 快进
controls.fastReverse; 快退
controls.next; 下一曲
controls.previous; 上一曲
*注: 上一曲和下一曲属性一般不能使用,因为这种功能是对一个播放列表气作用的,而对于新版本的播放器,js脚本一般没有权限去新建和修改播放列表的。只能自己去设计一个播放列表,自己去修改url属性去选曲。

//播放器基本属性
settings.volume:integer; 音量,0-100
settings.autoStart:Boolean; 是否自动播放
settings.mute:Boolean; 是否静音
settings.playCount:integer; 播放次数

//当前播放媒体的属性
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

//最后是一些很少用到的参数和属性
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 返回或设置音量(长整型)

—————更新部分

embed标签用法

embed
(一)、基本语法:
embed src=url
说明: embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等,
Netscape及新版的IE 都支持。url为音频或视频文件及其路径,可以是相对路径或绝对路径。
示例: <embed src="your.mid">

(二)、属性设置:
1、自动播放:
语法: autostart=true、false
说明: 该属性规定音频或视频文件是否在下载完之后就自动播放。
true: 音乐文件在下载完之后自动播放;
false: 音乐文件在下载完之后不自动播放。
示例: <embed src="your.mid" autostart=true>
<embed src="your.mid" autostart=false>

2、循环播放:
语法: loop=正整数、true、false
说明: 该属性规定音频或视频文件是否循环及循环次数。
属性值为正整数值时,音频或视频文件的循环次数与正整数值相同;
属性值为true时,音频或视频文件循环;
属性值为false时,音频或视频文件不循环。
示例: <embed src="your.mid" autostart=true loop=2>
<embed src="your.mid" autostart=true loop=true>
<embed src="your.mid" autostart=true loop=false>

3、面板显示:
语法: hidden=ture、no
说明: 该属性规定控制面板是否显示,默认值为no。
ture: 隐藏面板;
no: 显示面板。
示例: <embed src="your.mid" hidden=ture>
   <embed src="your.mid" hidden=no>

  4、开始时间:
语法: starttime=mm:ss(分: 秒)
说明: 该属性规定音频或视频文件开始播放的时间。未定义则从文件开头播放。
示例: <embed src="your.mid" starttime="00:10">

  5、音量大小:
语法: volume=0-100之间的整数
说明: 该属性规定音频或视频文件的音量大小。未定义则使用系统本身的设定。
示例: <embed src="your.mid" volume="10">

  6、容器属性:
语法: height=# width=#
说明: 取值为正整数或百分数,单位为像素。该属性规定控制面板的高度和宽度。
height: 控制面板的高度;
width: 控制面板的宽度。
示例: <embed src="your.mid" height=200 width=200>

  7、容器单位:
语法: units=pixels、en
说明: 该属性指定高和宽的单位为pixels或en。
示例: <embed src="your.mid" units="pixels" height=200 width=200>
<embed src="your.mid" units="en" height=200 width=200>

  8、外观设置:
语法: controls=console、smallconsole、playbutton、pausebutton、stopbutton、
volumelever 说明: 该属性规定控制面板的外观。默认值是console。
console: 一般正常面板;
smallconsole: 较小的面板;
playbutton: 只显示播放按钮;
pausebutton: 只显示暂停按钮;
stopbutton: 只显示停止按钮;
volumelever: 只显示音量调节按钮。
示例: <embed src="your.mid" controls=smallconsole>
<embed src="your.mid" controls=volumelever>

  9、对象名称:
语法: name=#
说明: #为对象的名称。该属性给对象取名,以便其他对象利用。
示例: <embed src="your.mid" name="sound1">

  10、说明文字:
语法: title=#
说明: #为说明的文字。该属性规定音频或视频文件的说明文字。
示例: <embed src="your.mid" title="第一首歌">

  11、前景色和背景色:
语法: palette=color|color
说明: 该属性表示嵌入的音频或视频文件的前景色和背景色,第一个值为前景色,第二个值为背景
色,中间用 | 隔开。color可以是RGB色(RRGGBB)也可以是颜色名,还可以是transparent
(透明)。 示例: <embed src="your.mid" palette="red|black">

  12、对齐方式:
语法: align=top、bottom、center、baseline、 left、right、texttop、middle、
absmiddle、absbottom
说明: 该属性规定控制面板和当前行中的对象的对齐方式。
center: 控制面板居中;
left: 控制面板居左;
right: 控制面板居右;
top: 控制面板的顶部与当前行中的最高对象的顶部对齐;
bottom: 控制面板的底部与当前行中的对象的基线对齐;
baseline: 控制面板的底部与文本的基线对齐;
texttop: 控制面板的顶部与当前行中的最高的文字顶部对齐;
middle: 控制面板的中间与当前行的基线对齐;
absmiddle: 控制面板的中间与当前文本或对象的中间对齐;
absbottom: 控制面板的底部与文字的底部对齐。
示例: <embed src="your.mid" align=top>
<embed src="your.mid" align=center>

media player控制

player.controls.play(); 播放
player.controls.stop(); 停止
player.controls.pause(); 暂停
player.controls.currentPosition 返回播放文件的当前时间位置(以秒为单位)
player.controls.currentPositionString 时间格式的字符串 "0:32"
player.currentMedia.duration 返回播放文件的总长度(以秒为单位)
player.currentMedia.durationString 时间格式的字符串 "4:34"
player.settings.volume 音量 (0-100)
player.settings.balance 声道(通过它应该可以进行立体声、左声道、右声道的控制,最左-9640,最右9640。)
player.settings.mute = s 静音(s取值为true和false)
player.closedCaption.CaptioningID 网页中出现字幕的容器的ID
player.closedCaption.SAMIFileName 字幕文件地址
player.playState 返回播放器状态( 3: 正在播放,2: 暂停1: 已停止)

例子:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script>
var music_src = new Array();
music_src[0] = "music/1.mid";
music_src[1] = "music/2.mid";
music_src[2] = "music/3.mid";
music_src[3] = "music/4.mid";
music_src[4] = "music/5.mid";
var array_index = Math.random() * 5;
var music_index = Math.floor(array_index);
function p_music()
{
var starts = wind_meb.playState;
if(starts == 1)
{
music_index++;
alert(music_index);
wind_meb.url = music_src[music_index];
wind_meb.controls.play();
}
timer = setTimeout("p_music()",3000);
}
</script>
</head>
<body onLoad="p_music()">
<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" id="wind_meb">
<param value="1" name="ShowStatusBar">
<param name="url" value="music/1.mid">
</object>
</body>
</html>

======================================================

REAL PLAYER控制

player.DoPlay() 播放
player.DoPause() 暂停
player.DoStop() 停止
player.GetLength() 返回播放文件的总长度(以毫秒为单位)
player.GetPosition() 返回播放文件的当前时间位置(以毫秒为单位)
player.GetPlayState() 返回播放器状态(0:停止,1:连接,2:缓冲,3:播放,4:暂停,5:寻找)
player.SetPosition(n) 时间位置跳到n的地方(n取值以毫秒为单位)
player.SetVolume(n) 设置音量(n取值为0到100)
player.SetMute(s) 静音(s取值为true和false)
player.SetFullScreen() 全屏
player.setSource() 设置文件来源

js控制MediaPlayer播放器

其实用js来做一个音乐播放器很容易,因为mediaplayer提供了一系列的接口来对网页嵌入的播放器进行控制。下面简单的介绍一下:

在网页内插入播放器的代码为:

<object id="player" height="64" width="260" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param NAME="AutoStart" VALUE="-1">
<!–是否自动播放–>
<param NAME="Balance" VALUE="0">
<!–调整左右声道平衡,同上面旧播放器代码–>
<param name="enabled" value="-1">
<!–播放器是否可人为控制–>
<param NAME="EnableContextMenu" VALUE="-1">
<!–是否启用上下文菜单–>
<param NAME="url" value="/blog/1.wma">
<!–播放的文件地址–>
<param NAME="PlayCount" VALUE="1">
<!–播放次数控制,为整数–>
<param name="rate" value="1">
<!–播放速率控制,1为正常,允许小数,1.0-2.0–>
<param name="currentPosition" value="0">
<!–控件设置:当前位置–>
<param name="currentMarker" value="0">
<!–控件设置:当前标记–>
<param name="defaultFrame" value="">
<!–显示默认框架–>
<param name="invokeURLs" value="0">
<!–脚本命令设置:是否调用URL–>
<param name="baseURL" value="">
<!–脚本命令设置:被调用的URL–>
<param name="stretchToFit" value="0">
<!–是否按比例伸展–>
<param name="volume" value="50">
<!–默认声音大小0%-100%,50则为50%–>
<param name="mute" value="0">
<!–是否静音–>
<param name="uiMode" value="mini">
<!–播放器显示模式:Full显示全部;mini最简化;None不显示播放控制,只显示视频窗口;invisible全部不显示–>
<param name="windowlessVideo" value="0">
<!–如果是0可以允许全屏,否则只能在窗口中查看–>
<param name="fullScreen" value="0">
<!–开始播放是否自动全屏–>
<param name="enableErrorDialogs" value="-1">
<!–是否启用错误提示报告–>
<param name="SAMIStyle" value>
<!–SAMI样式–>
<param name="SAMILang" value>
<!–SAMI语言–>
<param name="SAMIFilename" value>
<!–字幕ID–>
</object>

下面是一些常用的方法和属性:

//基本属性
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
enableContextMenu:Boolean; 启用/禁用右键菜单(也是简单的防盗链方法)
fullScreen:boolean; 是否全屏显示

//播放器控制属性
controls.play; 播放
controls.pause; 暂停
controls.stop; 停止
controls.currentPosition:double; 当前进度
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23”
controls.fastForward; 快进
controls.fastReverse; 快退
controls.next; 下一曲
controls.previous; 上一曲
*注: 上一曲和下一曲属性一般不能使用,因为这种功能是对一个播放列表气作用的,而对于新版本的播放器,js脚本一般没有权限去新建和修改播放列表的。只能自己去设计一个播放列表,自己去修改url属性去选曲。

//播放器基本属性
settings.volume:integer; 音量,0-100
settings.autoStart:Boolean; 是否自动播放
settings.mute:Boolean; 是否静音
settings.playCount:integer; 播放次数

//当前播放媒体的属性
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

//最后是一些很少用到的参数和属性
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 返回或设置音量(长整型)

—————更新部分

embed标签用法

embed
(一)、基本语法:
embed src=url
说明: embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等,
Netscape及新版的IE 都支持。url为音频或视频文件及其路径,可以是相对路径或绝对路径。
示例: <embed src="your.mid">

(二)、属性设置:
1、自动播放:
语法: autostart=true、false
说明: 该属性规定音频或视频文件是否在下载完之后就自动播放。
true: 音乐文件在下载完之后自动播放;
false: 音乐文件在下载完之后不自动播放。
示例: <embed src="your.mid" autostart=true>
<embed src="your.mid" autostart=false>

2、循环播放:
语法: loop=正整数、true、false
说明: 该属性规定音频或视频文件是否循环及循环次数。
属性值为正整数值时,音频或视频文件的循环次数与正整数值相同;
属性值为true时,音频或视频文件循环;
属性值为false时,音频或视频文件不循环。
示例: <embed src="your.mid" autostart=true loop=2>
<embed src="your.mid" autostart=true loop=true>
<embed src="your.mid" autostart=true loop=false>

3、面板显示:
语法: hidden=ture、no
说明: 该属性规定控制面板是否显示,默认值为no。
ture: 隐藏面板;
no: 显示面板。
示例: <embed src="your.mid" hidden=ture>
  <embed src="your.mid" hidden=no>

  4、开始时间:
语法: starttime=mm:ss(分: 秒)
说明: 该属性规定音频或视频文件开始播放的时间。未定义则从文件开头播放。
示例: <embed src="your.mid" starttime="00:10">

  5、音量大小:
语法: volume=0-100之间的整数
说明: 该属性规定音频或视频文件的音量大小。未定义则使用系统本身的设定。
示例: <embed src="your.mid" volume="10">

  6、容器属性:
语法: height=# width=#
说明: 取值为正整数或百分数,单位为像素。该属性规定控制面板的高度和宽度。
height: 控制面板的高度;
width: 控制面板的宽度。
示例: <embed src="your.mid" height=200 width=200>

  7、容器单位:
语法: units=pixels、en
说明: 该属性指定高和宽的单位为pixels或en。
示例: <embed src="your.mid" units="pixels" height=200 width=200>
<embed src="your.mid" units="en" height=200 width=200>

  8、外观设置:
语法: controls=console、smallconsole、playbutton、pausebutton、stopbutton、
volumelever 说明: 该属性规定控制面板的外观。默认值是console。
console: 一般正常面板;
smallconsole: 较小的面板;
playbutton: 只显示播放按钮;
pausebutton: 只显示暂停按钮;
stopbutton: 只显示停止按钮;
volumelever: 只显示音量调节按钮。
示例: <embed src="your.mid" controls=smallconsole>
<embed src="your.mid" controls=volumelever>

  9、对象名称:
语法: name=#
说明: #为对象的名称。该属性给对象取名,以便其他对象利用。
示例: <embed src="your.mid" name="sound1">

  10、说明文字:
语法: title=#
说明: #为说明的文字。该属性规定音频或视频文件的说明文字。
示例: <embed src="your.mid" title="第一首歌">

  11、前景色和背景色:
语法: palette=color|color
说明: 该属性表示嵌入的音频或视频文件的前景色和背景色,第一个值为前景色,第二个值为背景
色,中间用 | 隔开。color可以是RGB色(RRGGBB)也可以是颜色名,还可以是transparent
(透明)。 示例: <embed src="your.mid" palette="red|black">

  12、对齐方式:
语法: align=top、bottom、center、baseline、 left、right、texttop、middle、
absmiddle、absbottom
说明: 该属性规定控制面板和当前行中的对象的对齐方式。
center: 控制面板居中;
left: 控制面板居左;
right: 控制面板居右;
top: 控制面板的顶部与当前行中的最高对象的顶部对齐;
bottom: 控制面板的底部与当前行中的对象的基线对齐;
baseline: 控制面板的底部与文本的基线对齐;
texttop: 控制面板的顶部与当前行中的最高的文字顶部对齐;
middle: 控制面板的中间与当前行的基线对齐;
absmiddle: 控制面板的中间与当前文本或对象的中间对齐;
absbottom: 控制面板的底部与文字的底部对齐。
示例: <embed src="your.mid" align=top>
<embed src="your.mid" align=center>

media player控制

player.controls.play(); 播放
player.controls.stop(); 停止
player.controls.pause(); 暂停
player.controls.currentPosition 返回播放文件的当前时间位置(以秒为单位)
player.controls.currentPositionString 时间格式的字符串 "0:32"
player.currentMedia.duration 返回播放文件的总长度(以秒为单位)
player.currentMedia.durationString 时间格式的字符串 "4:34"
player.settings.volume 音量 (0-100)
player.settings.balance 声道(通过它应该可以进行立体声、左声道、右声道的控制,最左-9640,最右9640。)
player.settings.mute = s 静音(s取值为true和false)
player.closedCaption.CaptioningID 网页中出现字幕的容器的ID
player.closedCaption.SAMIFileName 字幕文件地址
player.playState 返回播放器状态( 3: 正在播放,2: 暂停1: 已停止)

例子:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script>
var music_src = new Array();
music_src[0] = "music/1.mid";
music_src[1] = "music/2.mid";
music_src[2] = "music/3.mid";
music_src[3] = "music/4.mid";
music_src[4] = "music/5.mid";
var array_index = Math.random() * 5;
var music_index = Math.floor(array_index);
function p_music()
{
var starts = wind_meb.playState;
if(starts == 1)
{
music_index++;
alert(music_index);
wind_meb.url = music_src[music_index];
wind_meb.controls.play();
}
timer = setTimeout("p_music()",3000);
}
</script>
</head>
<body onLoad="p_music()">
<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" id="wind_meb">
<param value="1" name="ShowStatusBar">
<param name="url" value="music/1.mid">
</object>
</body>
</html>

======================================================

REAL PLAYER控制

player.DoPlay() 播放
player.DoPause() 暂停
player.DoStop() 停止
player.GetLength() 返回播放文件的总长度(以毫秒为单位)
player.GetPosition() 返回播放文件的当前时间位置(以毫秒为单位)
player.GetPlayState() 返回播放器状态(0:停止,1:连接,2:缓冲,3:播放,4:暂停,5:寻找)
player.SetPosition(n) 时间位置跳到n的地方(n取值以毫秒为单位)
player.SetVolume(n) 设置音量(n取值为0到100)
player.SetMute(s) 静音(s取值为true和false)
player.SetFullScreen() 全屏
player.setSource() 设置文件来源

js控制MediaPlayer播放器

其实用js来做一个音乐播放器很容易,因为mediaplayer提供了一系列的接口来对网页嵌入的播放器进行控制。下面简单的介绍一下:

在网页内插入播放器的代码为:

<object id="player" height="64" width="260" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param NAME="AutoStart" VALUE="-1">
<!–是否自动播放–>
<param NAME="Balance" VALUE="0">
<!–调整左右声道平衡,同上面旧播放器代码–>
<param name="enabled" value="-1">
<!–播放器是否可人为控制–>
<param NAME="EnableContextMenu" VALUE="-1">
<!–是否启用上下文菜单–>
<param NAME="url" value="/blog/1.wma">
<!–播放的文件地址–>
<param NAME="PlayCount" VALUE="1">
<!–播放次数控制,为整数–>
<param name="rate" value="1">
<!–播放速率控制,1为正常,允许小数,1.0-2.0–>
<param name="currentPosition" value="0">
<!–控件设置:当前位置–>
<param name="currentMarker" value="0">
<!–控件设置:当前标记–>
<param name="defaultFrame" value="">
<!–显示默认框架–>
<param name="invokeURLs" value="0">
<!–脚本命令设置:是否调用URL–>
<param name="baseURL" value="">
<!–脚本命令设置:被调用的URL–>
<param name="stretchToFit" value="0">
<!–是否按比例伸展–>
<param name="volume" value="50">
<!–默认声音大小0%-100%,50则为50%–>
<param name="mute" value="0">
<!–是否静音–>
<param name="uiMode" value="mini">
<!–播放器显示模式:Full显示全部;mini最简化;None不显示播放控制,只显示视频窗口;invisible全部不显示–>
<param name="windowlessVideo" value="0">
<!–如果是0可以允许全屏,否则只能在窗口中查看–>
<param name="fullScreen" value="0">
<!–开始播放是否自动全屏–>
<param name="enableErrorDialogs" value="-1">
<!–是否启用错误提示报告–>
<param name="SAMIStyle" value>
<!–SAMI样式–>
<param name="SAMILang" value>
<!–SAMI语言–>
<param name="SAMIFilename" value>
<!–字幕ID–>
</object>

下面是一些常用的方法和属性:

//基本属性
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
enableContextMenu:Boolean; 启用/禁用右键菜单(也是简单的防盗链方法)
fullScreen:boolean; 是否全屏显示

//播放器控制属性
controls.play; 播放
controls.pause; 暂停
controls.stop; 停止
controls.currentPosition:double; 当前进度
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23”
controls.fastForward; 快进
controls.fastReverse; 快退
controls.next; 下一曲
controls.previous; 上一曲
*注: 上一曲和下一曲属性一般不能使用,因为这种功能是对一个播放列表气作用的,而对于新版本的播放器,js脚本一般没有权限去新建和修改播放列表的。只能自己去设计一个播放列表,自己去修改url属性去选曲。

//播放器基本属性
settings.volume:integer; 音量,0-100
settings.autoStart:Boolean; 是否自动播放
settings.mute:Boolean; 是否静音
settings.playCount:integer; 播放次数

//当前播放媒体的属性
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

//最后是一些很少用到的参数和属性
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 返回或设置音量(长整型)

—————更新部分

embed标签用法

embed
(一)、基本语法:
embed src=url
说明: embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等,
Netscape及新版的IE 都支持。url为音频或视频文件及其路径,可以是相对路径或绝对路径。
示例: <embed src="your.mid">

(二)、属性设置:
1、自动播放:
语法: autostart=true、false
说明: 该属性规定音频或视频文件是否在下载完之后就自动播放。
true: 音乐文件在下载完之后自动播放;
false: 音乐文件在下载完之后不自动播放。
示例: <embed src="your.mid" autostart=true>
<embed src="your.mid" autostart=false>

2、循环播放:
语法: loop=正整数、true、false
说明: 该属性规定音频或视频文件是否循环及循环次数。
属性值为正整数值时,音频或视频文件的循环次数与正整数值相同;
属性值为true时,音频或视频文件循环;
属性值为false时,音频或视频文件不循环。
示例: <embed src="your.mid" autostart=true loop=2>
<embed src="your.mid" autostart=true loop=true>
<embed src="your.mid" autostart=true loop=false>

3、面板显示:
语法: hidden=ture、no
说明: 该属性规定控制面板是否显示,默认值为no。
ture: 隐藏面板;
no: 显示面板。
示例: <embed src="your.mid" hidden=ture>
 <embed src="your.mid" hidden=no>

  4、开始时间:
语法: starttime=mm:ss(分: 秒)
说明: 该属性规定音频或视频文件开始播放的时间。未定义则从文件开头播放。
示例: <embed src="your.mid" starttime="00:10">

  5、音量大小:
语法: volume=0-100之间的整数
说明: 该属性规定音频或视频文件的音量大小。未定义则使用系统本身的设定。
示例: <embed src="your.mid" volume="10">

  6、容器属性:
语法: height=# width=#
说明: 取值为正整数或百分数,单位为像素。该属性规定控制面板的高度和宽度。
height: 控制面板的高度;
width: 控制面板的宽度。
示例: <embed src="your.mid" height=200 width=200>

  7、容器单位:
语法: units=pixels、en
说明: 该属性指定高和宽的单位为pixels或en。
示例: <embed src="your.mid" units="pixels" height=200 width=200>
<embed src="your.mid" units="en" height=200 width=200>

  8、外观设置:
语法: controls=console、smallconsole、playbutton、pausebutton、stopbutton、
volumelever 说明: 该属性规定控制面板的外观。默认值是console。
console: 一般正常面板;
smallconsole: 较小的面板;
playbutton: 只显示播放按钮;
pausebutton: 只显示暂停按钮;
stopbutton: 只显示停止按钮;
volumelever: 只显示音量调节按钮。
示例: <embed src="your.mid" controls=smallconsole>
<embed src="your.mid" controls=volumelever>

  9、对象名称:
语法: name=#
说明: #为对象的名称。该属性给对象取名,以便其他对象利用。
示例: <embed src="your.mid" name="sound1">

  10、说明文字:
语法: title=#
说明: #为说明的文字。该属性规定音频或视频文件的说明文字。
示例: <embed src="your.mid" title="第一首歌">

  11、前景色和背景色:
语法: palette=color|color
说明: 该属性表示嵌入的音频或视频文件的前景色和背景色,第一个值为前景色,第二个值为背景
色,中间用 | 隔开。color可以是RGB色(RRGGBB)也可以是颜色名,还可以是transparent
(透明)。 示例: <embed src="your.mid" palette="red|black">

  12、对齐方式:
语法: align=top、bottom、center、baseline、 left、right、texttop、middle、
absmiddle、absbottom
说明: 该属性规定控制面板和当前行中的对象的对齐方式。
center: 控制面板居中;
left: 控制面板居左;
right: 控制面板居右;
top: 控制面板的顶部与当前行中的最高对象的顶部对齐;
bottom: 控制面板的底部与当前行中的对象的基线对齐;
baseline: 控制面板的底部与文本的基线对齐;
texttop: 控制面板的顶部与当前行中的最高的文字顶部对齐;
middle: 控制面板的中间与当前行的基线对齐;
absmiddle: 控制面板的中间与当前文本或对象的中间对齐;
absbottom: 控制面板的底部与文字的底部对齐。
示例: <embed src="your.mid" align=top>
<embed src="your.mid" align=center>

media player控制

player.controls.play(); 播放
player.controls.stop(); 停止
player.controls.pause(); 暂停
player.controls.currentPosition 返回播放文件的当前时间位置(以秒为单位)
player.controls.currentPositionString 时间格式的字符串 "0:32"
player.currentMedia.duration 返回播放文件的总长度(以秒为单位)
player.currentMedia.durationString 时间格式的字符串 "4:34"
player.settings.volume 音量 (0-100)
player.settings.balance 声道(通过它应该可以进行立体声、左声道、右声道的控制,最左-9640,最右9640。)
player.settings.mute = s 静音(s取值为true和false)
player.closedCaption.CaptioningID 网页中出现字幕的容器的ID
player.closedCaption.SAMIFileName 字幕文件地址
player.playState 返回播放器状态( 3: 正在播放,2: 暂停1: 已停止)

例子:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script>
var music_src = new Array();
music_src[0] = "music/1.mid";
music_src[1] = "music/2.mid";
music_src[2] = "music/3.mid";
music_src[3] = "music/4.mid";
music_src[4] = "music/5.mid";
var array_index = Math.random() * 5;
var music_index = Math.floor(array_index);
function p_music()
{
var starts = wind_meb.playState;
if(starts == 1)
{
music_index++;
alert(music_index);
wind_meb.url = music_src[music_index];
wind_meb.controls.play();
}
timer = setTimeout("p_music()",3000);
}
</script>
</head>
<body onLoad="p_music()">
<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" id="wind_meb">
<param value="1" name="ShowStatusBar">
<param name="url" value="music/1.mid">
</object>
</body>
</html>

======================================================

REAL PLAYER控制

player.DoPlay() 播放
player.DoPause() 暂停
player.DoStop() 停止
player.GetLength() 返回播放文件的总长度(以毫秒为单位)
player.GetPosition() 返回播放文件的当前时间位置(以毫秒为单位)
player.GetPlayState() 返回播放器状态(0:停止,1:连接,2:缓冲,3:播放,4:暂停,5:寻找)
player.SetPosition(n) 时间位置跳到n的地方(n取值以毫秒为单位)
player.SetVolume(n) 设置音量(n取值为0到100)
player.SetMute(s) 静音(s取值为true和false)
player.SetFullScreen() 全屏
player.setSource() 设置文件来源

用Javascript控制MediaPlayer的播放

<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="mp" width="300" height="240">
<param name="AudioStream" value="-1">
<param name="AutoSize" value="-1">
<!–是否自动调整播放大小–>
<param name="AutoStart" value="-1">
<!–是否自动播放–>
<param name="AnimationAtStart" value="-1">
<param name="AllowScan" value="-1">
<param name="AllowChangeDisplaySize" value="-1">
<param name="AutoRewind" value="0">
<param name="Balance" value="0">
<!–左右声道平衡,最左-9640,最右9640–>
<param name="BaseURL" value>
<param name="BufferingTime" value="15">
<!–缓冲时间–>
<param name="CaptioningID" value>
<param name="ClickToPlay" value="-1">
<param name="CursorType" value="0">
<param name="CurrentPosition" value="0">
<!–当前播放进度 -1 表示不变,0表示开头 单位是秒,比如10表示从第10秒处开始播放,值必须是-1.0或

大于等于0–>
<param name="CurrentMarker" value="0">
<param name="DefaultFrame" value>
<param name="DisplayBackColor" value="0">
<param name="DisplayForeColor" value="16777215">
<param name="DisplayMode" value="0">
<param name="DisplaySize" value="0">
<!–视频1-50%, 0-100%, 2-200%,3-全屏 其它的值作0处理,小数则采用四舍五入然后按前的处理–>
<param name="Enabled" value="-1">
<param name="EnableContextMenu" value="-1">
<!-是否用右键弹出菜单控制–>
<param name="EnablePositionControls" value="-1">
<param name="EnableFullScreenControls" value="-1">
<param name="EnableTracker" value="-1">
<!–是否允许拉动播放进度条到任意地方播放–>
<param name="Filename" value="http://www.fth.com/UploadFile/070715035913.wma" valuetype="ref">
<param name="InvokeURLs" value="-1">
<param name="Language" value="-1">
<param name="Mute" value="0">
<!–是否静音–>
<param name="PlayCount" value="10">
<!–重复播放次数,0为始终重复–>
<param name="PreviewMode" value="-1">
<param name="Rate" value="1">
<!–播放速度1.0-2.0倍的速度播放–>
<param name="SAMILang" value>
<param name="SAMIStyle" value>
<param name="SAMIFileName" value>
<!–选择同时播放(伴音)的歌曲–>
<param name="SelectionStart" value="-1">
<param name="SelectionEnd" value="-1">
<param name="SendOpenStateChangeEvents" value="-1">
<param name="SendWarningEvents" value="-1">
<param name="SendErrorEvents" value="-1">
<param name="SendKeyboardEvents" value="0">
<param name="SendMouseClickEvents" value="0">
<param name="SendMouseMoveEvents" value="0">
<param name="SendPlayStateChangeEvents" value="-1">
<param name="ShowCaptioning" value="0">
<!–是否显示字幕,为一块黑色,下面会有一大块黑色,一般不显示–>
<param name="ShowControls" value="-1">
<!–是否显示控制,比如播放,停止,暂停–>
<param name="ShowAudioControls" value="-1">
<!–是否显示音量控制–>
<param name="ShowDisplay" value="0">
<!–显示节目信息,比如版权等–>
<param name="ShowGotoBar" value="0">
<!–一条框,在下面,有往下箭头–>
<param name="ShowPositionControls" value="-1">
<!–是否显示往前往后及列表,如果显示一般也都是灰色不可控制–>
<param name="ShowStatusBar" value="-1">
<!–当前播放信息,显示是否正在播放,及总播放时间和当前播放到的时间–>
<param name="ShowTracker" value="-1">
<!–是否显示当前播放跟踪条,即当前的播放进度条–>
<param name="TransparentAtStart" value="-1">
<param name="VideoBorderWidth" value="0">
<!–显示部的宽部,如果小于视频宽,则最小为视频宽,或者加大到指定值,并自动加大高度.此改变只改变

四周的黑框大小,不改变视频大小–>
<param name="VideoBorderColor" value="0">
<!–显示黑色框的颜色, 为RGB值,比如ffff00为黄色–>
<param name="VideoBorder3D" value="0">
<param name="Volume" value="0">
<!–音量大小,负值表示是当前音量的减值,值自动会取绝对值,最大为0,最小为-9640,最大0–>
<param name="WindowlessVideo" value="0">
<!–如果是0可以允许全屏,否则只能在窗口中查看–>
</object>
<br>
<b>播放控制:</b><br>
音乐切换:
<input type="button" onclick="mp.Filename=’http://www.fzl43.com/upload/2007_09/07090821519958.wma’" value="生命要继续">
<input type="button" onclick="mp.Filename=’http://www.fth.com/UploadFile/070715035913.wma’" value="我们的歌">
<input type="button" onclick="alert(mp.Filename)" value="当前曲目">
<br>
播放控制:
<input type="button" onclick="mp.play()" value="播放">
<input type="button" onclick="mp.pause()" value="暂停">
<input type="button" onclick="mp.pause();mp.CurrentPosition=0" value="停止">
<br>
声道控制:
<input type="button" onclick="mp.Balance=9640" value="左声道">
<input type="button" onclick="mp.Balance=0" value="立体声">
<input type="button" onclick="mp.Balance=-9640" value="右声道">
<input type="button" onclick="alert(mp.Balance)" value="当前状态">
<br>
进度控制:
<input type="button" onclick="mp.CurrentPosition=0" value="回到开始">
<input type="button" onclick="mp.CurrentPosition+=60" value="快进一分钟">
<input type="button" onclick="mp.CurrentPosition-=60" value="快退一分钟">
<input type="button" onclick="alert(mp.Duration)" value="总长度">
<input type="button" onclick="alert(mp.CurrentPosition)" value="当前进度">
<br>
音量控制:
<script language="javascript">
function setVolume(num)
{
var mp=document.getElementById("mp")
tnum=mp.Volume+num
if(tnum>0){tnum=0}
if(tnum<-10000){tnum=-10000}
mp.Volume=tnum
}
</script>
<input type="button" onclick="setVolume(200)" value="音量+">
<input type="button" onclick="setVolume(-200)" value="音量-">
<input type="button" onclick="mp.Volume=0" value="最大">
<input type="button" onclick="mp.Volume=-10000" value="最小">
<input type="button" onclick="mp.Mute=-1" value="静音">
<input type="button" onclick="mp.Mute=0" value="取消静音">
<input type="button" onclick="alert(mp.Volume)" value="当前音量">
<br>
速度控制:
<input type="button" onclick="if(mp.Rate<2){mp.Rate+=0.1}" value="加速">
<input type="button" onclick="if(mp.Rate>0.2){mp.Rate-=0.1}" value="减速">
<input type="button" onclick="mp.Rate=1" value="正常">
<input type="button" onclick="alert(mp.Rate)" value="当前速度">
<br><b>界面控制:</b><br>
字幕控制:
<input type="button" onclick="mp.ShowCaptioning=-1" value="显示">
<input type="button" onclick="mp.ShowCaptioning=0" value="隐藏">
<input type="button" onclick="alert(mp.ShowCaptioning)" value="当前状态">
<br>
音量控制:
<input type="button" onclick="mp.ShowAudioControls=-1" value="显示">
<input type="button" onclick="mp.ShowAudioControls=0" value="隐藏">
<input type="button" onclick="alert(mp.ShowAudioControls)" value="当前状态">
<br>
播放控制:
<input type="button" onclick="mp.ShowControls=-1" value="显示">
<input type="button" onclick="mp.ShowControls=0" value="隐藏">
<input type="button" onclick="alert(mp.ShowControls)" value="当前状态">
<br>
媒体信息:
<input type="button" onclick="mp.ShowDisplay=-1" value="显示">
<input type="button" onclick="mp.ShowDisplay=0" value="隐藏">
<input type="button" onclick="alert(mp.ShowDisplay)" value="当前状态">
<br>
GotoBar :
<input type="button" onclick="mp.ShowGotoBar=-1" value="显示">
<input type="button" onclick="mp.ShowGotoBar=0" value="隐藏">
<input type="button" onclick="alert(mp.ShowGotoBar)" value="当前状态">
<br>
状 态 栏:
<input type="button" onclick="mp.ShowStatusBar=-1" value="显示">
<input type="button" onclick="mp.ShowStatusBar=0" value="隐藏">
<input type="button" onclick="alert(mp.ShowStatusBar)" value="当前状态">
<br>
跟 踪 条:
<input type="button" onclick="mp.ShowTracker=-1" value="显示">
<input type="button" onclick="mp.ShowTracker=0" value="隐藏">
<input type="button" onclick="alert(mp.ShowTracker)" value="当前状态">
<br>
位置控制:
<input type="button" onclick="mp.ShowPositionControls=-1" value="显示">
<input type="button" onclick="mp.ShowPositionControls=0" value="隐藏">
<input type="button" onclick="alert(mp.ShowPositionControls)" value="当前状态">
<br>
窗口缩放:
<input type="button" onclick="mp.DisplaySize=1" value="50%">
<input type="button" onclick="mp.DisplaySize=0" value="100%">
<input type="button" onclick="mp.DisplaySize=2" value="200%">
<input type="button" onclick="mp.DisplaySize=3" value="全屏">
<input type="button" onclick="alert(mp.DisplaySize)" value="当前状态">

MySQL外键(foreign key)的用法

在MySQL中MyISAM和InnoDB存储引擎都支持外键(foreign key),但是MyISAM只能支持语法,却不能实际使用。下面通过例子记录下InnoDB中外键的使用方法:

创建主表:
mysql> create table parent(id int not null,primary key(id)) engine=innodb;
Query OK, 0 rows affected (0.04 sec)
创建从表:
mysql> create table child(id int,parent_id int,foreign key (parent_id) references parent(id) on delete cascade) engine=innodb;
Query OK, 0 rows affected (0.04 sec)

插入主表测试数据:
mysql> insert into parent values(1),(2),(3);
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0
插入从表测试数据:
mysql> insert into child values(1,1),(1,2),(1,3),(1,4);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (test/child, CONSTRAINT child_ibfk_1 FOREIGN KEY (parent_id) REFERENCES parent (id) ON DELETE CASCADE)

因为4不在主表中,插入时发生了外键约束错误。

只插入前三条:
mysql> insert into child values(1,1),(1,2),(1,3);
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0
成功!

删除主表记录,从表也将同时删除相应记录:
mysql> delete from parent where id=1;
Query OK, 1 row affected (0.03 sec)
mysql> select * from child;
+——+———–+
| id | parent_id |
+——+———–+
| 1 | 2 |
| 1 | 3 |
+——+———–+
2 rows in set (0.00 sec)

更新child中的外键,如果对应的主键不存在,则报错:
mysql> update child set parent_id=4 where parent_id=2;
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (test/child, CONSTRAINT child_ibfk_1 FOREIGN KEY (parent_id) REFERENCES parent (id) ON DELETE CASCADE)

如果改为主表中存在的值,则可以正常更新:
mysql> update child set parent_id=2 where parent_id=2;
Query OK, 0 rows affected (0.01 sec)
Rows matched: 1 Changed: 0 Warnings: 0

如果要在父表中更新或者删除一行,并且在子表中也有一行或者多行匹配,此时子表的操作有5个选择:
· CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行。ON DELETE CASCADE和ON UPDATE CASCADE都可用。在两个表之间,你不应定义若干在父表或子表中的同一列采取动作的ON UPDATE CASCADE子句。
· SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL。如果外键列没有指定NOT NULL限定词,这就是唯一合法的。ON DELETE SET NULL和ON UPDATE SET NULL子句被支持。
· NO ACTION: 在ANSI SQL-92标准中,NO ACTION意味这不采取动作,就是如果有一个相关的外键值在被参考的表里,删除或更新主要键值的企图不被允许进行(Gruber, 掌握SQL, 2000:181)。 InnoDB拒绝对父表的删除或更新操作。
· RESTRICT: 拒绝对父表的删除或更新操作。NO ACTION和RESTRICT都一样,删除ON DELETE或ON UPDATE子句。(一些数据库系统有延期检查,并且NO ACTION是一个延期检查。在MySQL中,外键约束是被立即检查的,所以NO ACTION和RESTRICT是同样的)。
· SET DEFAULT: 这个动作被解析程序识别,但InnoDB拒绝包含ON DELETE SET DEFAULT或ON UPDATE SET DEFAULT子句的表定义。