首页 > 学院 > 开发设计 > 正文

IOS解析歌词lrc

2019-11-14 20:03:34
字体:
来源:转载
供稿:网友

最近在捣鼓音乐播放器,过程中学到了一些东西,写下来分享一下,首先是歌词的解析

首先我们看看lrc(不贴维基了怕打不开

歌词文件一般是这样的格式

1.[分钟:秒.毫秒] 歌词

2. [分钟:秒] 歌词

3. [分钟:秒:毫秒] 歌词

其中1是标准格式,下面我就一种为例。

思路是先获取整个歌词内容,再按换行分段,对每一行中的内容,分为两部分,时间和内容,分别提取。

     -(void)parselyric   {      NSString *path = [[NSBundle mainBundle]pathForResource:_lab_title.text ofType:@"lrc"];          //if lyric file exits      if ([path length]) {                //get the lyric string        NSString *lyc = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];                //init        _musictime = [[NSMutableArray alloc]init];        _lyrics = [[NSMutableArray alloc]init];        _t = [[NSMutableArray alloc]init];                NSArray *arr = [lyc componentsSeparatedByString:@"/n"];                for (NSString *item in arr) {                        //if item is not empty            if ([item length]) {                                NSRange startrange = [item rangeOfString:@"["];                NSLog(@"%d%d",startrange.length,startrange.location);                NSRange stoPRange = [item rangeOfString:@"]"];                                NSString *content = [item substringWithRange:NSMakeRange(startrange.location+1, stoprange.location-startrange.location-1)];                                NSLog(@"%d",[item length]);                                //the music time format is mm.ss.xx such as 00:03.84                if ([content length] == 8) {                    NSString *minute = [content substringWithRange:NSMakeRange(0, 2)];                    NSString *second = [content substringWithRange:NSMakeRange(3, 2)];                    NSString *mm = [content substringWithRange:NSMakeRange(6, 2)];                                        NSString *time = [NSString stringWithFormat:@"%@:%@.%@",minute,second,mm];                    NSNumber *total =[NSNumber numberWithInteger:[minute integerValue] * 60 + [second integerValue]];                    [_t addObject:total];                                        NSString *lyric = [item substringFromIndex:10];                                        [_musictime addObject:time];                    [_lyrics addObject:lyric];                }            }        }    }    else        _lyrics = nil;  }

这里我只处理里标准格式的歌词,其它格式也可用类似方法处理。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表