javascript MP3播放器的三种实现方法( 二)

<html>
<head>
<title>aboutplayer</title>
<style>
body {
 overflow:auto;
 font-size:12px;
 cursor:default;
 background-color: #977E4A;
}

#table01 {
 font-size:12px;
 background-Color:black;
 color:white;
 text-align:center;
}

#playListTitle {
 background-Color:#001122;
 color:white;
 font-size:12px;
 font-weight:bold;
 width:100%;
 height:16px;
 padding:2px;
}

#playList {
 width:150px;
 height:225px;
 margin:0px;
 font-size:12px;
 background-Color:black;
 color:white;
}

#musicList {
 width:200px;
 border:buttonface 4px groove;
 height:80px;
 position:absolute;
 right:5px;
 top:23px;
 left: -1px;
}

#musicListTitle {
 font-size:13px;
 width:100%;
 height:20px;
 background-Color:#C5FFC5;
 padding:3px;
 font-weight:bold;
}

#musicList a {
 text-decoration:none;
 width:100%;
 height:20px;
 line-height:20px;
 font-szie:20px;
 line-height:20px;
 padding-top:5px;
 padding-left:10px;
}

#musicList a:hover {
 background-Color:#E5FFE5;
}
.style1 {
 color: #006699;
 font-weight: bold;
}
.style2 {font-size: 12px}
a:link {
 text-decoration: none;
}
a:visited {
 text-decoration: none;
}
a:hover {
 text-decoration: none;
}
a:active {
 text-decoration: none;
}
.style4 {font-size: 12px; color: #FFFF33; }
.style7 {font-family: "Times New Roman", Times, serif}
</style>
<script>

function playList_dragOver(){
 event.returnValue=false;
}

function playList_dragEnter(){
 event.returnValue=false;
 event.dataTransfer.dropEffect='link';
}

function addMusic(){
 if(event.srcElement.tagName=='A'){
  strTxt=event.srcElement.innerText;
  strURL=event.srcElement.href;
  playList.innerHTML="";
  playList.options[0]=new Option(strTxt,strURL);
  playList.options[0].selected=true;
 }
 event.returnValue=false;

 playList_dblClick();
 return(false);
}

function playList_drop(){
 strTxt=unescape(event.dataTransfer.getData('Text').split(":")[0]);
 strURL=unescape(event.dataTransfer.getData('Text').split(":")[1]);
 playList.options[playList.options.length]=new Option(strTxt,strURL);
}

function playList_keyDown(){
 if(event.keyCode==46){
  try{
   playList.options[playList.options.selectedIndex].outerHTML="";
  }catch(e){}
  return(false);
 }
 if(event.keyCode==13){
  playList_dblClick();
  return(false);
 }
}

function playList_dblClick(){
 MediaPlayer1.detachEvent("PlayStateChange",checkPlayStatus);
 MediaPlayer1.fileName=playList.value;
 MediaPlayer1.play();
 setTimeout('MediaPlayer1.play();MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);',1000);
}

function musicList_dragStart(){
 if(event.srcElement.tagName=='A'){
  event.dataTransfer.setData('Text',escape(event.srcElement.innerText)+":"+escape(event.srcElement.href));
 }else{
  return(false);
 }
}

function init(){
 MediaPlayer1.AutoRewind=false;
 MediaPlayer1.AutoStart=true;
 MediaPlayer1.SendPlayStateChangeEvents=true;
 MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);
}

function checkPlayStatus(oldState,newState){
 try{
  if(MediaPlayer1.PlayState==0){
   MediaPlayer1.detachEvent("PlayStateChange",checkPlayStatus);
   MediaPlayer1.stop();
   if(playList.options.selectedIndex<playList.options.length-1){
    playList.options[playList.options.selectedIndex+1].selected=true;
   }else{
    playList.options[0].selected=true;
   }
   MediaPlayer1.fileName=playList.value;
   MediaPlayer1.play();
   setTimeout('MediaPlayer1.play();MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);',1000);
  }
 }catch(e){}
}
</script>
<script>
function doFull()
{
var objId = "MediaPlayer1";
var funcStr = objId + ".displaySize = 3";
eval(funcStr);
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><body οnlοad="init();">
<table id=table01>
 <tr>
  <td>
   <object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" width="286" height="225" STANDBY="Loading Windows Media Player components..." TYPE="application/x-oleobject">
    <param name="AudioStream" value="-1">
    <param name="AutoSize" value="-1">
    <!--是否自动调整播放大小-->
    <param name="AutoStart" value="0">
    <!--是否自动播放-->
    <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="" 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">
    <embed src="-1" width="286" height="225" autostart="0" audiostream="-1" autosize="-1" animationatstart="-1" allowscan="-1" allowchangedisplaysize="-1" autorewind="0" balance="0" baseurl="value" bufferingtime="15" captioningid="value" clicktoplay="-1" cursortype="0" currentposition="0" currentmarker="0" defaultframe="value" displaybackcolor="0" displayforecolor="16777215" displaymode="0" displaysize="0" enabled="-1" enablecontextmenu="-1" enablepositioncontrols="-1" enablefullscreencontrols="-1" enabletracker="-1" filename="" invokeurls="-1" language="-1" mute="0" playcount="10" previewmode="-1" rate="1" samilang="value" samistyle="value" samifilename="value" selectionstart="-1" selectiοnend="-1" sendopenstatechangeevents="-1" sendwarningevents="-1" senderrorevents="-1" sendkeyboardevents="0" sendmouseclickevents="0" sendmousemoveevents="0" sendplaystatechangeevents="-1" showcaptioning="0" showcontrols="-1" showaudiocontrols="-1" showdisplay="0" showgotobar="0" showpositioncontrols="-1" showstatusbar="-1" showtracker="-1" transparentatstart="-1" videoborderwidth="0" videobordercolor="0" videoborder3d="0" volume="0" windowlessvideo="0"></embed>
    <!--如果是0可以允许全屏,否则只能在窗口中查看-->
   </object>
  </td>
  <td>
   <div id=playListTitle>Play List:</div>
   <select id=playList size=2 οndragοver="playList_dragOver();" οndragenter="playList_dragEnter();"
    οndrοp="playList_drop();" οnkeydοwn="playList_keyDown();" οndblclick="playList_dblClick();">
   </select>
  </td>
 </tr>
</table>
<script language="JavaScript1.2">

var dragswitch=0
var nsx
var nsy
var nstemp

function drag_dropns(name){
temp=eval(name)
temp.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)
temp.οnmοusedοwn=gons
temp.οnmοusemοve=dragns
temp.οnmοuseup=stopns
}

function gons(e){
temp.captureEvents(Event.MOUSEMOVE)
nsx=e.x
nsy=e.y
}
function dragns(e){
if (dragswitch==1){
temp.moveBy(e.x-nsx,e.y-nsy)
return false
}
}

function stopns(){
temp.releaseEvents(Event.MOUSEMOVE)
}


//drag drop function for IE 4+
/

var dragapproved=false

function drag_dropie(){
if (dragapproved==true){
document.all.showimage.style.pixelLeft=tempx+event.clientX-iex
document.all.showimage.style.pixelTop=tempy+event.clientY-iey
return false
}
}

function initializedragie(){
iex=event.clientX
iey=event.clientY
tempx=showimage.style.pixelLeft
tempy=showimage.style.pixelTop
dragapproved=true
document.οnmοusemοve=drag_dropie
}


if (document.all){
document.οnmοuseup=new Function("dragapproved=false")
}

drag drop functions end here//

function hidebox(){
if (document.all)
showimage.style.visibility="hidden"
else if (document.layers)
document.showimage.visibility="hide"
}


</script>
<div id="showimage" style="position:absolute; width:500px; left:465px; top:18px; height: 0px;">
<table border="0" width="199" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0"
    height="36">
      <tr>
        <td width="100%" bgcolor="#C6FFC6" style="padding:4px" onMousedown="initializedragie()"><ilayer width="100%" onSelectStart="return false"><layer width="100%" onMouseover="dragswitch=1;drag_dropns(showimage)" onMouseout="dragswitch=0" class="style1">
        <div align="left" class="style2">
          <div align="center">用鼠标按着我拖拖看<span class="style7">^o^</span></div>
        </div>
        </layer>
        </ilayer></td>
        <td bgcolor="#00CCFF" style="cursor:hand"><strong><a href="#" onClick="hidebox();return false">×</a></strong></td>
      </tr>
      <tr>
        <td width="100%" style="padding:4px" colspan="2"><p> </p>
          <div id=musicList οndragstart="musicList_dragStart();">
            <div class="style2" id=musicListTitle>All Music</div>
            <span class="style2"><a href="F:/音乐/没有人比我更爱你.mp3" οnclick="addMusic();">没有人比我更爱你</a><br>
            <a href="http://www.gyvnet.com/music_new/web/user/usermusic/2308/2005063004283371564.mp3" οnclick="addMusic();">第一滴泪 - 动力火车</a><br>
            <a href="http://211.90.238.134/blog/upload/music/half.sugar.wma" οnclick="addMusic();">半糖主义 - SHE</a><br>
            <a href="http://web.163.sh.cn/~kkyhm/music/3.wma" οnclick="addMusic();">发如雪 - 周杰伦</a></span><br>
            <hr>
            <span class="style4">Tips: 把歌曲拖入播放列表<br>
            </span>
              <input type="button" class="style2" οnclick="doFull();" value="全屏/ESC返回">
              </div>
          </td>
      </tr>
    </table>
    </td>
  </tr>
</table>
</div>
<div id=info></div>
<body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Html5网页纯JavaScript录制MP3音频 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Html5网页JavaScript录制MP3音频</title> <meta charset="utf-8" /> </head> <body> Html5网页JavaScript录制MP3音频 录制 停止 上传 调试信息: [removed][removed] [removed] var recorder = new MP3Recorder({ debug:true, funOk: function () { btnStart.disabled = false; log('初始化成功'); }, funCancel: function (msg) { log(msg); recorder = null; } }); var mp3Blob; function funStart(button) { btnStart.disabled = true; btnStop.disabled = false; btnUpload.disabled = true; log('录音开始...'); recorder.start(); } function funStop(button) { recorder.stop(); btnStart.disabled = false; btnStop.disabled = true; btnUpload.disabled = false; log('录音结束,MP3导出中...'); recorder.getMp3Blob(function (blob) { log('MP3导出成功'); mp3Blob = blob; var url = URL.createObjectURL(mp3Blob); var div = document.createElement('div'); var au = document.createElement('audio'); var hf = document.createElement('a'); au.controls = true; au.src = url; hf.href = url; hf.download = new Date().toISOString() + '.mp3'; hf[removed] = hf.download; div.appendChild(au); div.appendChild(hf); recordingslist.appendChild(div); }); } function log(str) { recordingslist[removed] += str + ''; } function funUpload() { var fd = new FormData(); var mp3Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.mp3'); fd.append('mp3Name', mp3Name); fd.append('file', mp3Blob); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { recordingslist[removed] += '上传成功:' + mp3Name + ''; } }; xhr.open('POST', 'upload.ashx'); xhr.send(fd); } [removed] </body> </html> [javascript] view plain copy 在CODE上查看代码片派生到我的代码片 (function (exports) { var MP3Recorder = function (config) { var recorder = this; config = config || {}; config.sampleRate = config.sampleRate || 44100; config.bitRate = config.bitRate || 128; navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; if (navigator.getUserMedia) { navigator.getUserMedia({ audio: true }, function (stream) { var context = new AudioContext(), microphone = context.createMediaStreamSource(stream), processor = context.createScriptProcessor(16384, 1, 1),//bufferSize大小,输入channel数,输出channel数 mp3ReceiveSuccess, currentErrorCallback; config.sampleRate = context.sampleRate; processor.onaudioprocess = function (event) { //边录音边转换 var array = event.inputBuffer.getChannelData(0); realTimeWorker.postMessage({ cmd: 'encode', buf: array }); }; var realTimeWorker = new Worker('js/worker-realtime.js'); realTimeWorker.onmessage = function (e) { switch (e.data.cmd) { case 'init': log('初始化成功'); if (config.funOk) { config.funOk(); } break; case 'end': log('MP3大小:', e.data.buf.length); if (mp3ReceiveSuccess) { mp3ReceiveSuccess(new Blob(e.data.buf, { type: 'audio/mp3' })); } break; case 'error': log('错误信息:' + e.data.error); if (currentErrorCallback) { currentErrorCallback(e.data.error); } break; default: log('未知信息:', e.data); } }; recorder.getMp3Blob = function (onSuccess, onError) { currentErrorCallback = onError; mp3ReceiveSuccess = onSuccess; realTimeWorker.postMessage({ cmd: 'finish' }); }; recorder.start = function () { if (processor && microphone) { microphone.connect(processor); processor.connect(context.destination); log('开始录音'); } } recorder.stop = function () { if (processor && microphone) { microphone.disconnect(); processor.disconnect(); log('录音结束'); } } realTimeWorker.postMessage({ cmd: 'init', config: { sampleRate: config.sampleRate, bitRate: config.bitRate } }); }, function (error) { var msg; switch (error.code || error.name) { case 'PERMISSION_DENIED': case 'PermissionDeniedError': msg = '用户拒绝访问麦客风'; break; case 'NOT_SUPPORTED_ERROR': case 'NotSupportedError': msg = '浏览器不支持麦客风'; break; case 'MANDATORY_UNSATISFIED_ERROR': case 'MandatoryUnsatisfiedError': msg = '找不到麦客风设备'; break; default: msg = '无法打开麦克风,异常信息:' + (error.code || error.name); break; } if (config.funCancel) { config.funCancel(msg); } }); } else { if (config.funCancel) { config.funCancel('当前浏览器不支持录音功能'); } } function log(str) { if (config.debug) { console.log(str); } } } exports.MP3Recorder = MP3Recorder; })(window);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值