lrc格式歌词文件,啥意思啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lrc格式歌词文件,啥意思啊?相关的知识,希望对你有一定的参考价值。

我要在手机上下载MP3歌曲,可是不知道怎么下。。我的手机是联创0707的,说明书上写着歌曲必需放至“my music”的文件夹里才可在此播放器中显示、播放。
附加说明歌词显示功能:
用户在手机或存储卡“my music”目录下存放了LRC格式的文件,就可实现播放的MP3歌曲同步显示歌词,歌词文件可在网上下载。
注意:LRC文件与所对应的文件必须在相同的目录且文件名相同才能同步显示,仅扩展名不同。如MP3与LRC两个文件的文件名一致仍不能同步显示歌词,为下载的歌词文件在编辑时时间与现MP3文件时间不一直等原因造成,请重新下载新的LRC文件。
我一点都看不懂啊。。。。。什么意思啊????没想到用手机下载MP3都那么困难!!!我是手机菜鸟哒。。。。昨天刚买的。。各位大侠帮帮忙吧。。。。。。。

呵呵,一般来说你要播放MP3音乐只要下载MP3歌曲就可以了,但是你要同步歌词就需要下载LRC格式歌词文件了。

LRC歌词文件 可以在网络上下载。比如你要听 天黑黑, 只要下天黑黑.MP3 放到my music 文件夹下就可以听了,但是没有歌词的。

所以你又要下 天黑黑.lrc 这个歌词文件放到 my music 下 才可以。

其实 一般 什么 千千静听 或 QQ 音乐 都可以下 lrc歌词文件的。
参考技术A 下一个千千静听,在听歌的时候,会自动下载歌词,里面的就是lrc格式歌词文件,你把名字改成和你的mp3的歌的名字匹配,再放到你手机里就可以了。 参考技术B lrc是歌词文件,如果你想要在听mp3的时候看见同步的歌词,就像卡拉OK那样,你就把下载的mp3和lrc同时放在手机的my music文件夹里,但是文件名要相同,比如说mp3是“老鼠爱大米”,那么lrc也要是“老鼠爱大米”。如果你根本就不在乎听歌的时候看到歌词,你也就根本不需要管lrc是什么。 参考技术C 可以在百度搜索你要找的歌曲的歌词,在歌词的下面一般都会有“LRC歌词来自:……”你下载那个LRC歌词,之后改成跟你手机里歌曲的名字一样,存入到“my music”目录下,就OK了。 参考技术D LRC文件可以到网上下,把它和mp3放到同一个文件夹

歌词解析总结

前言

 

  目前常用歌词文件有3种

  • LRC
  • QRC
  • KRC

其中LRC是最常用的歌词文件,千千静听、酷我音乐都是用LRC做歌词解析的.它的格式非常简单.解析容易但是,歌词的精度只能控制到一行.

QRC是QQ音乐的歌词文件.其精度可以控制到每个字.它是无加密的.

KRC是酷狗播放器专用歌词文件,它通过了压缩处理并且加密.它也能精确控制到每一个字,同时还绑定了歌曲的信息,酷狗播放器打开时能够自动下载歌曲

 

LRC歌词解析

 

开头的歌曲信息可能会有2种展现形式

[00:02.37]三十而立
[00:03.12]
[00:03.80]作词:唐孝凡
[00:04.55]作曲:唐孝凡
[00:05.18]演唱:唐孝凡
[00:06.43]出品:深圳小龙文化
[ar:艺人名]
[ti:曲名]
[al:专辑名]
[by:编者(指编辑LRC歌词的人)]
[offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的,(但多数的MP3可能不会支持这种标签)。

第一种比较简单,和正文歌词解析相同.第二种需要写额外的正则解析.

其中时间标签,形式为“[mm:ss]”或“[mm:ss.ff]”(分钟数:秒数.毫秒数),时间标签需位于某行歌词中的句首部分,一行歌词可以包含多个时间标签(比如歌词中的迭句部分)。当歌曲播放到达某一时间点时,MP3就会寻找对应的时间标签并显示标签后面的歌词文本,这样就完成了“歌词同步”的功能。

开头标识信息正则

_regAr = /\[ar:(.+)\]/, 
_regTi = /\[ti:(.+)\]/,
_regAl = /\[al:(.+)\]/,
_regBy = /\[by:(.+)\]/,
_regOffset = /\[offset:.+\]/,
_regTime = /\[\d+:\d+(\.\d+)?\]/g,
    

 

解析歌词

 

伪代码:

  1. 将歌词转换为以行为单位的数组
  2. 对每一行做正则匹配,包括头信息和时间戳的匹配 
  3. 拿到匹配后的数据封装为想要的歌词数据结构,如果要同步歌词的话,最好封装为js对象,{时间 : 歌词} ,便与查找
    var _analysisLrc = function(){

        var lrcObj = {},
            lrcArray = this.lrcStr.split("\\n");

        for(var i=0;i<lrcArray.length;i++){
            var lyric = decodeURIComponent(lrcArray[i]);
            var timeReg = /\[\d*:\d*((\.|\:)\d*)*\]/g;
            var timeRegExpArr = lyric.match(timeReg);
            if(!timeRegExpArr)continue;

            //保存标准歌词数组
            var clause = lyric.replace(timeReg,‘‘);
            this.lrcArray.push(clause);

            for(var k = 0,h = timeRegExpArr.length;k < h;k++) {
                var t = timeRegExpArr[k];
                var min = Number(String(t.match(/\[\d*/i)).slice(1)),
                    sec = Number(String(t.match(/\:\d*/i)).slice(1));
                var time = min * 60 + sec;

                //保存解析后的歌词信息对象
                lrcObj[time] = {
                    txt : clause,
                    index : this.lrcArray.length - 1 
                }
            }
        }
        this.lrc = lrcObj;
    };

 

拖拽定位歌词

 

伪代码:

  1. 得到歌词数据对象{时间 : 歌词} 
  2. 对于一个给定的时间m,寻找小于m并且离m最近的时间
        findLrc : function(second){
            //找到比当前时间小,且离得最近的时间
            //因为歌词都是在时间之后的
            var min = 1000;
            for( var i in this.lrc){
                if ( i < second &&   Math.abs(second - i) < Math.abs(second - min) ){
                    min = i;
                }
            }
            return this.lrc[min]["index"];
        },

 

综合上面的功能,我写了个歌词解析的小工具. 有兴趣的可以看下  https://github.com/Alan110/desire/tree/master/lrc-analysis

技术分享 

 

参考资料:

 

歌词解析

http://www.brafox.com/post/2015/HTML5/js解析lrc歌词-制作滚动歌词.html

酷狗QRC文件解析-java

酷狗QRC文件解析-php

以上是关于lrc格式歌词文件,啥意思啊?的主要内容,如果未能解决你的问题,请参考以下文章

请问.lrc歌词里的[]里的是啥意思啊

LRC格式的歌词啥意思

lrc歌词是啥意思,是曲谱吗?

lrc是啥文件?

LRC是啥意思?

酷我音乐盒里的lrc是啥意思?