firefox下怎么做到lrc歌词与音乐同步播放? 现在很多在线JS播放器都能做到lrc歌词与音乐同步播放,但都只在IE下实现,firefox下不能实现,有高手知道firefox下实现的方法吗?由于是新手,分不多,但求热心解答,万分感激。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ie 和 firefox 播放音乐用的是不同的插件具体没研究过 替你关注下 可以尝试用flash实现,不同考虑浏览器兼容问题 谢谢上面两位的关注,我下了几款flash播放器,感觉上达不到要求,基本上只能播放mp3格式的,无法播放wma或其它格式,再就是,不够流畅。无法跟IE下面的JS播放器比。我在论坛里搜到一篇帖子有人解决了这个问题,但不知道用的什么方法:http://topic.csdn.net/u/20080115/20/b898d91b-55cb-427e-b375-2e467be4fa69.html 谢谢,我在他帖子里看到这句:“firefox下单曲播放歌词同步显示功能也实现了”,该不会是骗人的吧,呵呵 我的代码:http://www.yozer.com/lrcPlayer/player.html网上找的,代码都在页面里边看能想办法让firefox支持不? 要不然你使用FLASH做插件吧http://www.pcdog.com/edu/flash/2006/06/s125903_5.html这篇文章是FLASH打造LRC歌词播放器的 我改了些地方,如innerText改innerHTMLlrcbox等改成document.getElementById("lrcbox")不见效果,晕了。您是高手,应该有办法,谢谢您了。 firefox下用js控制播放器好像没有这方面的资料,呵呵,那位老兄用$("blogplayer").controls.play();控制播放器是不可能的,这样的语句只能在ie下运行。他应该没有实现歌词同步。你可以看看百度,同样的歌曲在ie下有歌词同步,在firefox就没有。 以前是研究过FF下歌词同步的,现在实现了mediaplayer下的,但realplayer的FF没有实现,所以还是不够完美截了三张图片,供参考.$("blogplayer").controls.play();等一些属性FF下可以控制mediaplayer的属性能实现歌词同步,但控制不了realplayer我前不久也提过这问题:http://topic.csdn.net/u/20080311/10/a9d11435-9318-4a10-b600-97f3fe0000ab.html 还有一点提下,貌似百度,163等一些网站使用的都是同一套歌词解析程序,用数组分割,但可能FF下会有点偏差,我以前也是那么做的,后来用正则解析,效率高点,我的博客还没做完呵呵,后台还点,等做好了公布代码让大家欣赏下...function LrcHandle(s){ var s = s.split(/\$S1/); var jsonStr = ""; var lrcTime = s[0].match(/\[(.*?)\]/g); for(var i=0,j=i+1;i<lrcTime.length;i++,j++){ lrcTime[i] = lrcTime[i].replace(/\[(.*?):(.*?)\]/g,"$1$S2$2"); var lrcTime2 = lrcTime[i].split(/\$S2/); var time = parseFloat(lrcTime2[0])*60+parseFloat(lrcTime2[1]); jsonStr += "{time:"+time.ToFixed(2)+",lrc:'"+s[1]+"'},"; } return jsonStr;}function LrcRun(){ offset = RegFun(/\[offset\:(.*?)\]/g,lrc)!=null?RegFun(/\[offset\:(.*?)\]/g,lrc):0; lrc = lrc.replace(/\[(ti|offset|ar|al|by|t_time)\:(.*?)\]/g,"").replace(/(^\s*)|(\s*$)/g,""); lrc = lrc.replace(/((\[(.*?)\])+)(.*?)/g,"\n$1$S1$4"); lrc = lrc.split(/\n/); var jsonStr = ""; for(var i=0;i<lrc.length;i++){ try{ jsonStr += LrcHandle(lrc[i]); }catch(e){ if(i%2==1) jsonStr += LrcHandle(lrc[i]); } } jsonStr = jsonStr.substring(0,jsonStr.length-1); lrc = LrcCom(eval("new Array("+jsonStr+")"));}function LrcCom(s){ for(var i=0;i<s.length-1;i++){ for(var j=i+1;j<s.length;j++){ if(s[i].time>s[j].time){ var tempTime = s[i].time; var tempLrc = s[i].lrc; s[i].time = s[j].time; s[i].lrc = s[j].lrc; s[j].time = tempTime; s[j].lrc = tempLrc; } } } return s;}核心代码也就这几句,希望对楼主有点帮助 麻烦把这个函数给我看下,正则我不太懂,RegFun $("blogplayer").controls.play();在FF下可以控制msmp你确定吗?看以下代码<HTML> <HEAD> <TITLE>lrc歌词播放演示 </TITLE> <SCRIPT> function pauseplayer() { document.getElementById('player').controls.pause(); } </SCRIPT> </head> <body> <embed id=player width="250px" height="200px" src="http://www.elxcy.com/xiaohua/flash/up/swf/200837163320.mp3" type="application/x-mplayer2" showstatusbar="1"></embed> <span style="cursor:pointer;" onclick="pauseplayer();">停止</span> </body></html>打开错误提示会告诉你document.getElementById('player').controls.pause() has no properties标准的document并不会去实现controls.pause(),但你在ie下可以正确执行(当然要换object).我估计你所谓的同步是重写<embed id=player width="250px" height="200px" src="http://www.elxcy.com/xiaohua/flash/up/swf/200837163320.mp3" type="application/x-mplayer2" showstatusbar="1"></embed>将其中的src换为其他,并开始同步,其实你并没取得歌曲的时间所以你的同步会“会有点偏差”.在ie下是使用controls.currentPosition或currentMedia.duration取得当前时间的,呵呵 如果真如楼上所说,那么拖动播放器的进度条,歌词就完全不同步了。我那个代码,在IE下面是可以随便拖动进度条,并让歌词同步的。真希望web_show帮我解答一下,确实达不到这个要求的话,我要考虑用flash播放器了。 星辰技术社区:www.netcsharp.cn,我们将帮您以最快的速度找到最佳的解决方案 灌水机代码:www.dullwolf.cn/CSDNer.rar下载。 jf jf jf jf jf 类似天猫商城首页这种图片效果如何实现 用C++读取网页数据 onMouseOver对象问题 怎样关闭浏览器? 能不能在html页面里图片载入的时候控制鼠标指针一直为箭头而不是变成沙漏+箭头? @,@ 在线等待-让下拉菜单项显示Tips 请问如何使用JS控制文本框中的光标在文本框的最后或其中的某处? 关于下载TXT文件 ExtJS ComboBox加载远程数据的时候,怎么传递加号 document.cookie是字符串么?如果是,那么它的赋值操作为何与string类型完全不同呢? 请教各位老大 在线编译器如何实现插入图片功能?
基本上只能播放mp3格式的,无法播放wma或其它格式,再就是,不够流畅。
无法跟IE下面的JS播放器比。我在论坛里搜到一篇帖子有人解决了这个问题,但不知道用的什么方法:
http://topic.csdn.net/u/20080115/20/b898d91b-55cb-427e-b375-2e467be4fa69.html
该不会是骗人的吧,呵呵
网上找的,代码都在页面里边
看能想办法让firefox支持不?
http://www.pcdog.com/edu/flash/2006/06/s125903_5.html
这篇文章是FLASH打造LRC歌词播放器的
lrcbox等改成document.getElementById("lrcbox")
不见效果,晕了。您是高手,应该有办法,谢谢您了。
$("blogplayer").controls.play();等一些属性FF下可以控制mediaplayer的属性能实现歌词同步,但控制不了realplayer
我前不久也提过这问题:http://topic.csdn.net/u/20080311/10/a9d11435-9318-4a10-b600-97f3fe0000ab.html
function LrcHandle(s){
var s = s.split(/\$S1/);
var jsonStr = "";
var lrcTime = s[0].match(/\[(.*?)\]/g);
for(var i=0,j=i+1;i<lrcTime.length;i++,j++){
lrcTime[i] = lrcTime[i].replace(/\[(.*?):(.*?)\]/g,"$1$S2$2");
var lrcTime2 = lrcTime[i].split(/\$S2/);
var time = parseFloat(lrcTime2[0])*60+parseFloat(lrcTime2[1]);
jsonStr += "{time:"+time.ToFixed(2)+",lrc:'"+s[1]+"'},";
}
return jsonStr;
}
function LrcRun(){
offset = RegFun(/\[offset\:(.*?)\]/g,lrc)!=null?RegFun(/\[offset\:(.*?)\]/g,lrc):0;
lrc = lrc.replace(/\[(ti|offset|ar|al|by|t_time)\:(.*?)\]/g,"").replace(/(^\s*)|(\s*$)/g,"");
lrc = lrc.replace(/((\[(.*?)\])+)(.*?)/g,"\n$1$S1$4");
lrc = lrc.split(/\n/);
var jsonStr = "";
for(var i=0;i<lrc.length;i++){
try{
jsonStr += LrcHandle(lrc[i]);
}catch(e){
if(i%2==1)
jsonStr += LrcHandle(lrc[i]);
}
}
jsonStr = jsonStr.substring(0,jsonStr.length-1);
lrc = LrcCom(eval("new Array("+jsonStr+")"));
}
function LrcCom(s){
for(var i=0;i<s.length-1;i++){
for(var j=i+1;j<s.length;j++){
if(s[i].time>s[j].time){
var tempTime = s[i].time;
var tempLrc = s[i].lrc;
s[i].time = s[j].time;
s[i].lrc = s[j].lrc;
s[j].time = tempTime;
s[j].lrc = tempLrc;
}
}
}
return s;
}
核心代码也就这几句,希望对楼主有点帮助
<HTML>
<HEAD>
<TITLE>lrc歌词播放演示 </TITLE>
<SCRIPT>
function pauseplayer()
{
document.getElementById('player').controls.pause();
}
</SCRIPT>
</head>
<body>
<embed id=player width="250px" height="200px" src="http://www.elxcy.com/xiaohua/flash/up/swf/200837163320.mp3"
type="application/x-mplayer2" showstatusbar="1"></embed>
<span style="cursor:pointer;" onclick="pauseplayer();">停止</span>
</body>
</html>
打开错误提示会告诉你document.getElementById('player').controls.pause() has no properties
标准的document并不会去实现controls.pause(),但你在ie下可以正确执行(当然要换object).
我估计你所谓的同步是重写<embed id=player width="250px" height="200px" src="http://www.elxcy.com/xiaohua/flash/up/swf/200837163320.mp3"
type="application/x-mplayer2" showstatusbar="1"></embed>
将其中的src换为其他,并开始同步,其实你并没取得歌曲的时间所以你的同步会“会有点偏差”.
在ie下是使用controls.currentPosition或currentMedia.duration取得当前时间的,呵呵
我那个代码,在IE下面是可以随便拖动进度条,并让歌词同步的。
真希望web_show帮我解答一下,确实达不到这个要求的话,我要考虑用flash播放器了。
jf jf
jf