百度mp3歌曲歌词,是怎么跟着曲子一起动的,求代码
发布网友
发布时间:2022-08-25 00:22
我来回答
共6个回答
热心网友
时间:2023-11-02 14:05
歌词跟着动是因为它每行前面都有时间的代码
你用记事本随便打开一个歌词文件就可以看到每行的歌词前面都是有时间编号的 明白了不?
回答者:qy850319 - 江湖新秀 四级 2-27 23:07
[00:19.42]七天
[00:22.41]张瑶
[00:24.12]
[00:34.52]星期一是红色的怎么说呢,
[00:37.12]对于我一切都是新鲜的,
[00:39.89]玫瑰是为遮掩羞涩而生的,
[00:42.51]这句话到底是谁说的,
[00:45.31]想想也对要有所准备,
[00:48.07]尽管这个季节的花卖的很贵
[00:50.73]同事不在也无所谓,
[00:53.41]可以闻着烫人的香味自我沉醉.
[00:56.21]星期二是成色的怎么说呢,
[00:58.86]你的爱似乎变的远远的
[01:01.56],距离是为验证美丽而生的,
[01:04.07]这句话真不像人说的,
[01:06.91]你买了水果橘子会上火,
[01:09.70]偏偏此刻看不见你躲什么躲,
[01:12.45]你真的很苯
[01:13.65]我感觉渴是想你用湿湿的眼神望着我.
时间〔分:秒:毫秒〕歌词
保存为.LRC格式!
回答者:shuoyi - 魔法师 四级 2-27 23:11
是时间控制~
回答者:DellaChou - 童生 一级 2-27 23:21
var loaderInterval;var tmpScroll;var tmpScrollId;var perLength;var tmpMatchLrcLine=0;var preMatchLrcLine=-1;var count=0;var tmpLrcContent="";var preStyleObj=document.styleSheets[0].rules[0];var nowStyleObj=document.styleSheets[0].rules[1];var tmpLrcs=new Array();var lineCount=new Array();var perLineCount=new Array();var preLrcContent=new Array();var nextLrcContent=new Array();var color=new Array(21);color[0]="#000000";color[1]="#0d0500";color[2]="#1a0a00";color[3]="#270f00";color[4]="#341400";color[5]="#411900";color[6]="#4e1e00";color[7]="#5b2300";color[8]="#682800";color[9]="#752d00";color[10]="#823200";color[11]="#8f3700";color[12]="#9c3c00";color[13]="#a94100";color[14]="#b64600";color[15]="#c34b00";color[16]="#d05000";color[17]="#dd5500";color[18]="#ea5a00";color[19]="#f75f00";color[20]="#ff5a00";function lrcInterface(pID,lrcID){var tmpOutput=document.getElementById('LrcShower_div');count=0;tmpOutput.innerHTML="<br><br><br><br><br><br><span style='font-size:12px;margin-left:12px'> 正在加载歌词信息,请您稍等片刻....";var tmp=setInterval(getObject,200);function getObject(){bdLRC=new bdSyncLRC();if(bdLRC!=null){clearInterval(tmp);bdLRC.setPlayer(pID);bdLRC.setURL(lrcID);bdLRC.setOutput("LrcShower_div");bdLRC.Exchange();bdLRC.begin()};else{if(count==25){clearInterval(tmp);tmpOutput.innerHTML="<br><br><br><br><br><br><span style='font-size:12px;margin-left:12px'> 可能是因为网络的原因,系统没有找到合适的歌词。请稍后重试"};else count++}}};function bdSyncLRC(){var playerObj=null;var playerTypeStr=null;var lrcURL="";var lrcShower="";var lrcContent="";var lrcObjArray=new Array();this.preLRC=new Array();this.offsetTime=0;this.scrollMoveLen=20;if(arguments.length>=1)this.setPlayer(arguments[0]);if(arguments.length>=2)this.setURL(arguments[1]);if(arguments.length>=3)this.setOutput(arguments[2])};bdSyncLRC.prototype.setPlayer=function(){if(arguments.length>=1){arg=arguments[0];playerTypeStr=String(arg);if(typeof(arg)=="string")this.playerObj=document.getElementById(arg);else if(typeof(arg)=="object")this.playerObj=arg}};bdSyncLRC.prototype.getPlayer=function(){if(typeof(document.getElementById("this.playerObj"))=='object')return this.playerObj;else return null};bdSyncLRC.prototype.setURL=function(){if(arguments.length>=1){var lrcDir,lrcFileName;lrcDir=String(Math.floor((parseInt(arguments[0])/100)));lrcFileName=arguments[0]+".lrc";this.lrcURL="/bdlrc/"+lrcDir+"/"+lrcFileName}};bdSyncLRC.prototype.getURL=function(){return this.lrcURL};bdSyncLRC.prototype.setContent=function(){if(arguments.length>=1)this.lrcContent=arguments[0]};bdSyncLRC.prototype.getContent=function(){return this.lrcContent};bdSyncLRC.prototype.setLRC=function(){if(arguments.length>=1)this.lrcObjArray=arguments[0]};bdSyncLRC.prototype.getLRC=function(){return this.lrcObjArray};bdSyncLRC.prototype.setOutput=function(showerId){this.lrcShower=showerId};bdSyncLRC.prototype.getOutput=function(){if(this.lrcShower!=""){arg=this.lrcShower;if(typeof(arg)=="string")return document.getElementById(arg);else if(typeof(arg)=="object")return arg};return null};bdSyncLRC.prototype.multiLRC=function(lrcLine){thisObj=this;tmpVar=lrcLine.split("]");if(tmpVar.length>=2){lrcText=tmpVar[tmpVar.length-1];for(j=0;j<tmpVar.length-1;j++){lrcTime=tmpVar[j]+"]";thisObj.preLRC.push(lrcTime+""+lrcText)}}};bdSyncLRC.prototype.preSyncLRC=function(){if(this.getContent()==null||this.getContent()=="")return;lrcLines=this.getContent().split("\n");tmpArr=new Array();var tmpItem;for(i=0;i<lrcLines.length;i++)this.multiLRC(replaceStr(lrcLines[i]));this.preLRC.sort();var tmpVar="aaa";for(i=this.preLRC.length-1;i>=0;i--)if(this.preLRC[i]==tmpVar){tmpVar=this.preLRC[i];this.preLRC.splice(i,1)};else tmpVar=this.preLRC[i];preTime=0;indexLRC=1;tmpArr[0]=new LRCItem(0,"");for(i=0;i<this.preLRC.length;i++){if(this.preLRC[i].length>9){tmpTime=getLyrcTime(this.preLRC[i]);tmpLrc=getLyrc(this.preLRC[i]);if(tmpTime<preTime||tmpLrc=="")continue;if(tmpTime==0){tmpArr[0].lrcContent=tmpLrc;continue};preTime=tmpTime;tmpItem=new LRCItem(tmpTime,tmpLrc);tmpArr[indexLRC++]=tmpItem}};var tmpItem=new LRCItem(3600,"Over...");tmpArr[indexLRC]=tmpItem;this.setLRC(tmpArr);getLineCount(tmpArr);getLrcContent(tmpArr);tmpLrcs=this.getLRC();tmpScroll=this.getOutput();tmpScrollId=this.getOutput();perLength=this.scrollMoveLen};function replaceStr(tmpStr){return tmpStr.replace(/^\s*|\s*$/g,"")};function getLyrc(tmpStr){try{tmpArray=tmpStr.split("]");return tmpArray[tmpArray.length-1]}catch(e){};return ""};function getLyrcTime(tmpStr){try{tmpChar=tmpStr.split("]")[0].split("[")[1];tmpVar=tmpChar.split(":");if(tmpVar.length<2)return 0;min=tmpVar[1].split(".")[0];tmpInt=parseInt(tmpVar[0])*60+parseFloat(min);if(!isNaN(tmpInt))return tmpInt}catch(e){};return 0};function LRCItem(){var lrcTime=-1;var lrcContent="";if(arguments.length>=2){this.lrcTime=arguments[0];this.lrcContent=arguments[1]}};function getLineCount(tmpLrcs){for(i=0;i<tmpLrcs.length;i++){lineCount[i]=Math.floor(tmpLrcs[i].lrcContent.length/67);perLineCount[i]=0;for(j=0;j<i;j++)perLineCount[i]+=lineCount[j]}};function getLrcContent(tmpLrcs){for(i=0;i<tmpLrcs.length;i++){preLrcContent[i]="<br>"+"<br>"+"<br>"+"<br>"+"<br>"+"<br>"+"<br>";nextLrcContent[i]="";for(j=0;j<i-1;j++)preLrcContent[i]+="<span style='font-size:12px;margin-left:12px'> <font color=#000000>"+replaceStr(tmpLrcs[j].lrcContent)+"</font></span><br>";for(j=i+1;j<tmpLrcs.length;j++)nextLrcContent[i]+="<span style='font-size:12px;margin-left:12px'> <font color=#000000>"+replaceStr(tmpLrcs[j].lrcContent)+"</font></span><br>";nextLrcContent[i]+="<br><br><br><br><br><br><br>"}};bdSyncLRC.prototype.Exchange=function(){var xmlhttp=null;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest()};else{if(window.ActiveXObject){try{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(ee){xmlhttp=new ActiveXObject("MSXML.XMLHTTP")}}};var tmpURL=this.getURL();thisObj=this;var tmpStr="";try{xmlhttp.open("GET",tmpURL,false);xmlhttp.onreadystatechange=function(){if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){tmpStr=bdBytes2Str(xmlhttp.responseBody);thisObj.setContent(tmpStr)}};xmlhttp.send(null)}catch(ee){}};bdSyncLRC.prototype.begin=function(){thisObj=this;tmpPlayerObj=thisObj.getPlayer();var tmpOutput=document.getElementById('LrcShower_div');var tmpI=setInterval(getlrc,100);count=0;function getlrc(){if(typeof(thisObj.getContent())!="undefined"){clearInterval(tmpI);thisObj.preSyncLRC();if(thisObj.getLRC()[0].lrcContent!="")thisObj.getOutput().innerHTML="<br><br><br><br><br><br>"+"<span style='font-size:12px;margin-left:12px'> <font color=#000000>"+replaceStr(thisObj.getLRC()[0].lrcContent)+"</font></span><br>"+nextLrcContent[0];else thisObj.getOutput().innerHTML="<br><br><br><br><br><br>"+nextLrcContent[0];getPlayingTime(thisObj.getPlayer(),thisObj)};else{if(count==50){clearInterval(tmpI);tmpOutput.innerHTML="<br><br><br><br><br><br><span style='font-size:12px;margin-left:12px'> 可能是因为网络的原因,系统没有找到合适的歌词。请稍后重试"};else count++}}};function getPlayingTime(playerObj,bdLRCObj){try{tmpbdLRCObj=bdLRCObj;var tmpPlayerObj=playerObj;if(typeof(tmpPlayerObj)=="string")tmpPlayerObj=document.getElementById(tmpPlayerObj);window.setTimeout("getPlayingTime(tmpPlayerObj,tmpbdLRCObj)",1000);bdsyncLyrc(tmpbdLRCObj)}catch(e){}};function getCurrentPosition(tmpPlayer){if(playerTypeStr=="MediaPlayer1")return tmpPlayer.CurrentPosition;else return tmpPlayer.GetPosition()/1000};function findLoc(bdLRCObj){var start;var end;var tmpPlayer=bdLRCObj.getPlayer();currentTime=getCurrentPosition(tmpPlayer);if(currentTime>=tmpLrcs[tmpMatchLrcLine].lrcTime){start=tmpMatchLrcLine;end=tmpLrcs.length};else{start=0;end=tmpMatchLrcLine+1};for(j=start;j<end;j++){nowLrc=tmpLrcs[j];nextLrc=tmpLrcs[(j<end-1)?j+1:j];nowTime=nowLrc.lrcTime+bdLRCObj.offsetTime;nextTime=nextLrc.lrcTime+bdLRCObj.offsetTime;if(nowTime<=currentTime&¤tTime<nextTime)return j}};function bdsyncLyrc(bdLRCObj){try{j=findLoc(bdLRCObj);tmpMatchLrcLine=j;tmpLrcContent=preLrcContent[j];if(j>0)tmpLrcContent+="<span class=prelrc> "+replaceStr(tmpLrcs[j-1].lrcContent)+"</span><br>";tmpLrcContent+="<span class=nowlrc> "+replaceStr(tmpLrcs[j].lrcContent)+"</span><br>";tmpLrcContent+=nextLrcContent[j];if(preMatchLrcLine!=tmpMatchLrcLine){tmpScroll.innerHTML=tmpLrcContent;if(Math.abs(tmpMatchLrcLine-preMatchLrcLine)>1){tmpScrollId.scrollTop=(tmpMatchLrcLine+perLineCount[tmpMatchLrcLine]+1)*perLength;tmpScrollId.scrollTop=(tmpMatchLrcLine+perLineCount[tmpMatchLrcLine]+1)*perLength};else{count=0;function scrollAdd(){tmpScrollId.scrollTop+=2*(1+lineCount[preMatchLrcLine]);count++;if(count==10)clearInterval(loaderInterval)};loaderInterval=setInterval(scrollAdd,25)}};preMatchLrcLine=tmpMatchLrcLine}catch(e){}};
以上是script教本,保存在服务器上面
下面是你的网页配置加进去就可以了。
<script src="脚本地址"></script>
<BODY>
<div id="song" style="display:none">你的歌曲名</div><div id="singer" style="display:none">演唱者</div>
<div id="url_div">歌曲出处:<a id="歌曲地址(脚本用)" href="歌曲地址(下载用)">点击下载</a></div>
<div id="song_div">歌曲曲目专辑名:<b>歌曲名字</b></div>
<div id="S_div">
回答者:dangjv - 试用期 一级 2-27 23:48
我也来回答:
回答即可得2分,回答被采纳则获得悬赏分以及奖励20分。 积分规则
回答字数在10000字以内
参考资料:
如果您的回答是从其他地方引用,请表明出处。
匿名回答
热心网友
时间:2023-11-02 14:05
[00:19.42]七天
[00:22.41]张瑶
[00:24.12]
[00:34.52]星期一是红色的怎么说呢,
[00:37.12]对于我一切都是新鲜的,
[00:39.89]玫瑰是为遮掩羞涩而生的,
[00:42.51]这句话到底是谁说的,
[00:45.31]想想也对要有所准备,
[00:48.07]尽管这个季节的花卖的很贵
[00:50.73]同事不在也无所谓,
[00:53.41]可以闻着烫人的香味自我沉醉.
[00:56.21]星期二是成色的怎么说呢,
[00:58.86]你的爱似乎变的远远的
[01:01.56],距离是为验证美丽而生的,
[01:04.07]这句话真不像人说的,
[01:06.91]你买了水果橘子会上火,
[01:09.70]偏偏此刻看不见你躲什么躲,
[01:12.45]你真的很苯
[01:13.65]我感觉渴是想你用湿湿的眼神望着我.
时间〔分:秒:毫秒〕歌词
保存为.LRC格式!
热心网友
时间:2023-11-02 14:06
以前看过这个方面的内容,
可以直接看百度的源代码,好像他是采用Ajax来做的,
用window media player 控件有一个方法可以获取到当前播放的歌曲的时间位置,得到时间再更新歌词显示就是了,Real player控件也有类似的方法,可以看百度的源代码。
热心网友
时间:2023-11-02 14:06
http://www.sman.cn/blog/article.asp?id=49
参考一下。。
可以搜索
js lrc 同步
热心网友
时间:2023-11-02 14:07
代码就不帖了!说一下实现步骤:
1.首先获取LRC歌词,分割成数组(按播放时间分割)
2.歌曲播放时,获取播放时间
3.遍历歌词数组,获取对应的歌词,显示或者是控制滚动条下拉
4.这就实现了歌词与歌曲同步播放了
百度上的就是这样,ajax 是用来异步加载歌词的
js 实现
要代码请联系我.给我留言。
热心网友
时间:2023-11-02 14:08
这个不在代码是怎么写的关键你自己要有思想你会用什么语言,文字歌词和歌曲中的歌词对应就如同你做flash一般要控制好LRC中的时间控制,说简单也很简单说复杂也很杂不会就复杂会则简单了。剩下的就是美工了相信你应该很强的了祝你好运