现在很多在线JS播放器都能做到lrc歌词与音乐同步播放,
但都只在IE下实现,firefox下不能实现,
有高手知道firefox下实现的方法吗?
由于是新手,分不多,但求热心解答,万分感激。

解决方案 »

  1.   

    ie 和 firefox 播放音乐用的是不同的插件具体没研究过  替你关注下
      

  2.   

    可以尝试用flash实现,不同考虑浏览器兼容问题
      

  3.   

    谢谢上面两位的关注,我下了几款flash播放器,感觉上达不到要求,
    基本上只能播放mp3格式的,无法播放wma或其它格式,再就是,不够流畅。
    无法跟IE下面的JS播放器比。我在论坛里搜到一篇帖子有人解决了这个问题,但不知道用的什么方法:
    http://topic.csdn.net/u/20080115/20/b898d91b-55cb-427e-b375-2e467be4fa69.html
      

  4.   

    谢谢,我在他帖子里看到这句:“firefox下单曲播放歌词同步显示功能也实现了”,
    该不会是骗人的吧,呵呵
      

  5.   

    我的代码:http://www.yozer.com/lrcPlayer/player.html
    网上找的,代码都在页面里边
    看能想办法让firefox支持不?
      

  6.   

    要不然你使用FLASH做插件吧
    http://www.pcdog.com/edu/flash/2006/06/s125903_5.html
    这篇文章是FLASH打造LRC歌词播放器的
      

  7.   

    我改了些地方,如innerText改innerHTML
    lrcbox等改成document.getElementById("lrcbox")
    不见效果,晕了。您是高手,应该有办法,谢谢您了。
      

  8.   

    firefox下用js控制播放器好像没有这方面的资料,呵呵,那位老兄用$("blogplayer").controls.play();控制播放器是不可能的,这样的语句只能在ie下运行。他应该没有实现歌词同步。你可以看看百度,同样的歌曲在ie下有歌词同步,在firefox就没有。
      

  9.   

    以前是研究过FF下歌词同步的,现在实现了mediaplayer下的,但realplayer的FF没有实现,所以还是不够完美截了三张图片,供参考.
    $("blogplayer").controls.play();等一些属性FF下可以控制mediaplayer的属性能实现歌词同步,但控制不了realplayer
    我前不久也提过这问题:http://topic.csdn.net/u/20080311/10/a9d11435-9318-4a10-b600-97f3fe0000ab.html
      

  10.   

    还有一点提下,貌似百度,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;
    }
    核心代码也就这几句,希望对楼主有点帮助
      

  11.   

    麻烦把这个函数给我看下,正则我不太懂,RegFun
      

  12.   

    $("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取得当前时间的,呵呵
      

  13.   

    如果真如楼上所说,那么拖动播放器的进度条,歌词就完全不同步了。
    我那个代码,在IE下面是可以随便拖动进度条,并让歌词同步的。
    真希望web_show帮我解答一下,确实达不到这个要求的话,我要考虑用flash播放器了。
      

  14.   

    星辰技术社区:www.netcsharp.cn,我们将帮您以最快的速度找到最佳的解决方案 
      

  15.   

    灌水机代码:www.dullwolf.cn/CSDNer.rar下载。
      

  16.   

    jf   jf
     jf jf
      jf