用javascript控制调用media player播放器例子

注:此范例转子 红叶的blog: http://blog.csdn.net/redleaf1995/archive/2008/03/12/2174122.aspx
此范例界面较为简单,支持播放列表 。建立播放列表的步骤为:
1)在文本框中输入媒体资源的地址,可以是HTTP地址,相对地址和绝对地址
2)点击“添加到媒体列表”按钮,将媒体资源信息放到媒体列表中
3)在媒体列表中,点击“添加”链接,将媒体加入到播放列表中
4)重复若干遍,加入所有歌曲
5)点击“播放选中的歌曲“,就开始播放 播放列表中的所有打勾的媒体文件
6)循环播放,部分代码贴出来了,但此范例没有实现此功能
< script language ="JavaScript" > ...
   
function el(objname)
   
...{
       
return document.getElementById(objname);
    }

//增加一首歌到播放器列表,这样,播放器放完一首歌之后,会继续放下一首
function addmedia(url)
...{
   
// 取得当前的播放列表
    var playlist=Player.currentPlaylist;//新建一个指定URL的Media。
    var currMedia = Player.newMedia(url);
   
//把新建的Media item添加到播放器列表
    playlist.appendItem(currMedia);
}


function clearlist()
...{              
   
//Player.currentPlaylist.count返回列表中的歌曲数量
    while(Player.currentPlaylist.count>0)
   
...{
       
var item =Player.currentPlaylist.item(Player.currentPlaylist.count-1);
    Player.currentPlaylist.removeItem(item);                  
//从播放列表中删除项
    }
         
}

//清空播放列表
function clearPlaylist()
...{              
    clearlist();
  
   
var l_tb = el("tabPlayList");
   
var row_len = l_tb.rows.length;
   
for(var i = 0; i < row_len; i++)
        l_tb.firstChild.removeChild(l_tb.firstChild.childNodes[
0]);        
}

//清空媒体列表
function clearMedialist()
...{              
   
var l_tb = el("tabMediaList");
   
var row_len = l_tb.rows.length;
   
for(var i = 0; i < row_len; i++)
        l_tb.firstChild.removeChild(l_tb.firstChild.childNodes[
0]);
}

//播放选中的歌曲
function addSeletedSongToPlayList()
...{
    clearlist();   
   
var l_tb = el("tabPlayList");
   
var row_len = l_tb.rows.length;
   
if(row_len == 0)
   
...{
       
//alert("无歌曲");
        return;
    }
             
 
for(var i=0;i<row_len;i++)
 
...{
     
var check = l_tb.rows[i].cells[0].childNodes[0];
     
var songname = l_tb.rows[i].cells[1].innerText;
     
if(check.checked==true)
       
...{
            addmedia(songname); 
        }

    }

  
    SetPlayMode(el(
"setplay").options[el("setplay").selectedIndex].value)
  
    Player.controls.play();             
//让播放器开始播放
}


//添加文本输入框中的url到播放列表
function addUrlToList()
...{
   
//addmedia(document.getElementById("songURL").value );
    var l_tb = el("tabMediaList");
   
var row_len = l_tb.rows.length;
   
var tr = document.createElement("tr");
   
var td = document.createElement("td");
   
var strSong = el("songURL").value;
   
var strHtml = strSong + "&nbsp;<a href='#' οnclick='addSong("" + strSong + "");'>添加</a>";
    strHtml
+= "&nbsp;<a href='#' οnclick='removeSong(this.parentElement.parentElement);'>移除</a>";
    td.innerHTML
= strHtml;
    tr.appendChild(td);
    l_tb.firstChild.appendChild(tr);
  
    el(
"songURL").value = "http://";
}


//添加文本输入框中的url到播放列表
function addSong(strSongName)
...{
   
var l_tb = el("tabPlayList");
   
var row_len = l_tb.rows.length;
   
var tr = document.createElement("tr");
  
   
var td = document.createElement("td");
   
var strChecked = "<input type='checkbox' checked value='" + strSongName + "'>";
    td.innerHTML
= strChecked;
    tr.appendChild(td);
  
    td
= document.createElement("td");
    td.innerHTML
= strSongName;
    tr.appendChild(td);
  
    td
= document.createElement("td");
   
var strHtml = "&nbsp;<a href='#' οnclick='removePlaySong(this.parentElement.parentElement);'>移除</a>";
    td.innerHTML
= strHtml;
    tr.appendChild(td);
  
    l_tb.firstChild.appendChild(tr);
}


//从媒体列表删除
function removeSong(tr)
...{
   
var l_tb = el("tabMediaList");
    l_tb.firstChild.removeChild(tr);
}


//从播放列表删除
function removePlaySong(tr)
...{
   
var l_tb = el("tabPlayList");
    l_tb.firstChild.removeChild(tr);
}


//到指定位置播放
function playposition()
...{
    Player.controls.currentPosition
= parseFloat(el("txtPosition").value);
    el(
"txtPosition").value = "1.0";
}


function StartMeUp()...{Player.controls.play()}
function ShutMeDown()...{Player.controls.stop()}
function Pause()...{Player.controls.pause()}
function Next()...{Player.controls.next()}
function Prev()...{Player.controls.previous()}
function Forward()...{Player.controls.fastForward()}
function reverse()...{Player.controls.fastReverse()}
function SetPlayMode(value)...{Player.settings.setMode(value,true)}
function ChangeuiMode(value)...{Player.uiMode=value;}
function AjustSound()...{
if(event.srcElement.name=="turnup" && Player.settings.volume<=100)
...{Player.settings.volume+=10}
if(event.srcElement.name=="turndown" && Player.settings.volume>=0)
...{Player.settings.volume-=10}
}

</ script >

< SCRIPT LANGUAGE  = "JScript" FOR = "Player" EVENT = "MediaChange" > ...
  el(
"spnCurrentMediaName").innerText = Player.currentMedia.name;
  el(
"spnCurrentMediaDuration").innerText = Player.currentMedia.durationString;
  el(
"spnCurrentMediaWidth").innerText = Player.currentMedia.imageSourceWidth;
  el(
"spnCurrentMediaHeight").innerText = Player.currentMedia.imageSourceHeight;
  el(
"spnCurrentMediaMarkerCount").innerText = Player.currentMedia.markerCount;
  el(
"spnCurrentSourceURL").innerText = Player.currentMedia.sourceURL;
</ SCRIPT >

< object id ="Player" width =300 height =300 classid ="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6" >
                   
< param name ="URL" value ="test.wmv" >
                   
< param name ="autoStart" value ="1" >
                   
< param name ="balance" value ="0" >
                   
< param name ="baseURL" value >
                   
< param name ="captioningID" value >
                   
< param name ="currentPosition" value ="0" >
                   
< param name ="currentMarker" value ="0" >
                   
< param name ="defaultFrame" value ="0" >    
                   
< param name ="enabled" value ="1" >
                   
< param name ="enableErrorDialogs" value ="0" >
                   
< param name ="enableContextMenu" value ="1" >              
                   
< param name ="fullScreen" value ="0" >     
                   
< param name ="invokeURLs" value ="1" >
                   
< param name ="mute" value ="0" >
                   
< param name ="playCount" value ="1" >  
                   
< param name ="rate" value ="1" >
                   
< param name ="SAMIStyle" value >
                   
< param name ="SAMILang" value >
                   
< param name ="SAMIFilename" value >
                   
< param name ="stretchToFit" value ="0" >
                   
< param name ="uiMode" value ="full" >
                   
< param name ="volume" value ="100" >
                   
< param name ="windowlessVideo" value ="0" >
</ object >
< br >
< INPUT TYPE ="BUTTON" NAME ="BtnPlay" VALUE ="播放" OnClick ="StartMeUp()" >
< INPUT TYPE ="BUTTON" NAME ="BtnStop" VALUE ="停止" OnClick ="ShutMeDown()" >
< input type ="BUTTON" name ="BtnPause" value ="暂停" onClick ="Pause()" >
< label >
   
< input name ="turnup" type ="button" id ="turnup" value ="+" onClick ="AjustSound()" >
    调节声音
</ label >
< input name ="turndown" type ="button" id ="turndown" value ="-" onClick ="AjustSound()" >
< br >
< input type ="BUTTON" name ="BtnNext" value ="下一个" onClick ="Next()" >
< input type ="BUTTON" name ="BtnPrev" value ="前一个" onClick ="Prev()" >
< INPUT TYPE ="BUTTON" NAME ="BtnForw" VALUE ="快进" OnClick ="Forward()" >
< INPUT TYPE ="BUTTON" NAME ="BtnReve" VALUE ="快退" OnClick ="reverse()" >
< br >
< label > 播放模式 </ label >
< select id ="setplay" name ="setplay" onChange ="SetPlayMode(this.options[this.selectedIndex].value)" >
 
< option value ="loop" > 循环播放 </ option >
 
< option value ="shuffle" > 随机播放 </ option >
</ select >
< label > 显示模式 </ label >
< select name ="Changeui" onChange ="ChangeuiMode(this.options[this.selectedIndex].value)" >
 
< option value ="none" > none </ option >
 
< option value ="mini" > mini </ option >
 
< option value ="invisible" > invisible </ option >
 
< option value ="full" selected > full </ option >
</ select >
< br >< br >< br >< br >
媒体列表:
< br >
< div id = "divMediaList" >
   
< table id ="tabMediaList" >
   
</ table >
</ div >
< br >
播放列表:
< br >
< div id ="divPlayList" >
   
< table id ="tabPlayList" >
   
</ table >
</ div >
< br >
当前播放媒体信息:
< br >
名称:
< span id ="spnCurrentMediaName" ></ span >< br >
长度:
< span id ="spnCurrentMediaDuration" ></ span > < br >
宽度:
< span id ="spnCurrentMediaWidth" ></ span > 像素 < br >
高度:
< span id ="spnCurrentMediaHeight" ></ span > 像素 < br >
标志数:
< span id ="spnCurrentMediaMarkerCount" ></ span >< br >
源地址:
< span id ="spnCurrentSourceURL" ></ span >< br >
< br >
< br >
< INPUT TYPE = "BUTTON" ID = "play" Name ="play" VALUE = "播放选中的歌曲" onClick = "addSeletedSongToPlayList();" >
< INPUT TYPE = "BUTTON" ID = "clear" Name ="clear" VALUE = "清空播放列表" onClick = "clearPlaylist();" >
< INPUT TYPE = "BUTTON" ID = "clear" Name ="clear" VALUE = "清空媒体列表" onClick = "clearMedialist();" >
< br >
< input type ="Text" name ="songURL" value ="http://" size ="33" >
< INPUT TYPE = "BUTTON" ID = "add" Name ="add" VALUE = "添加到媒体列表" onClick = "addUrlToList();" >
< br > 可输入:1)HTTP地址: 如http://www.aaa.com/xxx.mp3
< br > 2).相对位置: 如yyy.wmv
< br > 3).绝对位置: 如file:///D:/bbb/zzz.wma
< br >
< br >
< input type ="button" onclick ="alert(Player.versionInfo);" value ="播放器版本" >
< input type ="button" onclick ="alert(Player.controls.currentPosition);" value ="获取当前位置" >
跳到
< input type ="text" id ="txtPosition" size ="5" value ="1.0" > 秒播放
< input type ="button" onclick ="playposition();" value ="确定" >



//另附连续播放功能部分代码,主要实现多条节目连续播放,而且多条节目有自己的出点和入点。以及播放器的相关播放状态控制。
xml数据格式如下:
    < filegroup >
   
< clip >
       
< filename > //198.9.0.149/pdd共享文件夹/Temp/35_相声test.avi </ filename >
       
< inframe > 00:00:00:00 </ inframe >
       
< outframe > 00:05:21:06 </ outframe >
       
< audiofilename />
   
</ clip >
   
< clip >
       
< filename > //198.9.0.149/pdd共享文件夹/Temp/dvcam_00.mov </ filename >
       
< inframe > 00:00:00:00 </ inframe >
       
< outframe > 00:00:15:24 </ outframe >
       
< audiofilename />
   
</ clip >
   
< clip >
       
< filename > //198.9.0.149/pdd共享文件夹/Temp/jm1.wmv </ filename >
       
< inframe > 00:00:00:00 </ inframe >
       
< outframe > 00:04:35:00 </ outframe >
       
< audiofilename />
   
</ clip >
</ filegroup >

var   FileListIndex = - 1 ;
function MediaPlayFunc()
... {
   
var ItemNodeList=FileListXmlDoc.documentElement.selectNodes("/filegroup/clip");
   
var len = ItemNodeList.length;
   
if (len>0)
   
...{
       
if(FileListIndex == -1)
            FileListIndex
= 0;
       
else if(FileListIndex + 1 == len)
       
...{
            el(
"xplayer").controls.stop();
           
//el("xplayer").controls.play();
            return;
        }

       
else
            FileListIndex
= FileListIndex + 1;
      
       
if(ItemNodeList[FileListIndex].selectSingleNode("filename") != null)
       
...{
           
var url = ItemNodeList[FileListIndex].selectSingleNode("filename").text;
           
//需要转换成桢格式
            var inframe = ItemNodeList[FileListIndex].selectSingleNode("inframe").text;
           
var outframe = ItemNodeList[FileListIndex].selectSingleNode("outframe").text;
           
/**//***********用此方法报权限不足错误*****************
            //addmedia(ItemNodeList[i].selectSingleNode("filename").text); 
            //新建一个指定URL的Media。
            //var playlist=el("xplayer").currentPlaylist;
            //var currMedia = el("xplayer").newMedia(url);
            //把新建的Media item添加到播放器列表
            //playlist.appendItem(currMedia);
            /***************************************************
*/

            el(
"xplayer").controls.currentPosition = inframe/25.0;

           
var timelong = (outframe - inframe)/25.0*1000.0
           
//让播放器开始播放
            XPlayer.setUrl(url);

           
if(el("xplayer").openState!=13)             //13 open state
            ...{
                el(
"xplayer").controls.play();
               
if(el("xplayer").openState!=6)         //6 open but no flow state
                ...{
                    pubListTimer
= setTimeout(MediaPlayFunc,timelong);
                }

               
return;
            }

           
else
           
...{
               
if(el("xplayer").playState == 3)    //3 play state
                ...{
                    el(
"xplayer").controls.pause();
                }

            }

        }

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值