解析LRC歌词文件readlrc
package com.jikexueyuan.readlrc.main; import com.jikexueyuan.readlrc.utils.Utils; import java.io.File; /**
* Created by Tall on 2015/8/7.
*/
public class Main {
public static void main(String[] args) { File lrcFile = new File("resource/庄心妍-时间会走.lrc"); Utils utils = new Utils(); if (lrcFile.exists()) {
utils.parseLRC(lrcFile);
} else {
System.out.println("LRC文件不存在");
}
}
}
Main
package com.jikexueyuan.readlrc.lrc; /**
* Created by Gaojinhua on 2015/8/8.
*/
public class LRC {
private int timeKey;
private String currentLrc; public LRC(int timeKey, String currentLrc) {
this.currentLrc = currentLrc;
this.timeKey = timeKey;
} public String getLrc() {
return currentLrc;
} public void setLrc(String lrc) {
this.currentLrc = lrc;
} public int getTimeKey() {
return timeKey;
} public void setTime(int timeKey) {
this.timeKey = timeKey;
}
}
LRC
package com.jikexueyuan.readlrc.utils; import com.jikexueyuan.readlrc.lrc.LRC; import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.*; /**
* Created by Gaojinhua on 2015/8/8.
*/
public class Utils {
public void parseLRC(File lrcFile) {
String line; int timeKey;
String currentLrc; final Map<Integer, LRC> lrcMap = new LinkedHashMap<Integer, LRC>(); try {
FileInputStream fileInputStream = new FileInputStream(lrcFile);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); while ((line = bufferedReader.readLine()) != null) {
timeKey = 60 * Integer.parseInt(line.substring(line.indexOf(":") - 2, line.indexOf(":")))
+ Integer.parseInt(line.substring(line.indexOf(":") + 1, line.indexOf(":") + 3));
currentLrc = line.substring(line.lastIndexOf("]") + 1) + " "; LRC lrc = new LRC(timeKey, currentLrc);
lrcMap.put(lrc.getTimeKey(), lrc);
} final Timer timer = new Timer();
final TimerTask timerTask = new TimerTask() {
@Override
public void run() {
int tempTime = 0;
for (LRC lrc : lrcMap.values()) {
try {
Thread.sleep(1000 * (lrc.getTimeKey() - tempTime));
tempTime = lrc.getTimeKey();
} catch (InterruptedException e) {
e.printStackTrace();
} System.out.printf("\r" + lrc.getLrc());
}
timer.cancel();
//this.cancel();
}
};
timer.schedule(timerTask, new Date()); fileInputStream.close();
inputStreamReader.close();
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Utils
解析LRC歌词文件readlrc的更多相关文章
- Java使用正则表达式解析LRC歌词文件
LRC歌词是一种应用广泛的歌词文件,各主流播放器都支持. lrc歌词文本中含有两类标签: 1.标识标签(ID-tags) [ar:艺人名] [ti:曲名] [al:专辑名] [by:编者(指编辑LRC ...
- c#解析Lrc歌词文件
看到很多人解析歌词文件时写了一大片的字符处理代码,而且看得不是很明白,所以自己研究了一下, 首先来了解下Lrc文件 时间格式: 1.标准格式: [分钟:秒.毫秒] 歌词 注释:括号.冒号.点号全都要求 ...
- 我的Android进阶之旅------>Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能
前言 一LRC歌词文件简介 1什么是LRC歌词文件 2LRC歌词文件的格式 LRC歌词文件的标签类型 1标识标签 2时间标签 二解析LRC歌词 1读取出歌词文件 2解析得到的歌词内容 1表示每行歌词内 ...
- 如何将lrc歌词文件批量转换为ANSI编码?
有些MP3.MP4或学习机只能播放ANSI编码的歌词文件,可是从网站上下载的歌词大多是UTF-8或者其它机器支持不了的编码,如何批量将这些lrc歌词文件转换成ANSI编码的文件呢? 工具/原料 萍客T ...
- 浅析LRC歌词文件
[时间:2018-12] [状态:Open] [关键词:字幕,LRC,歌词,lyric,文件格式] 0 引言 几年前(2010年左右),网络音乐流行与免费的时代,网上有大量的mp3,使用比较常见的播放 ...
- 10行代码解析krc歌词文件
互联网上,我们常见的歌词格式有 LRC.TRC(天天动听歌词).KRC(KuGou ResourCe,酷狗资源文件)和 QRC(QQ音乐歌词):在影视制作中,人们通常会用其他的卡拉 OK 字幕格式,例 ...
- LRC歌词文件读取代码
/**************************************************/ /*******************-main文件-******************* ...
- C#下载歌词文件
前段时间写了一篇c#解析Lrc歌词文件,对lrc文件进行解析,支持多个时间段合并.本文借下载歌词文件来探讨一下同步和异步方法. Lrc文件在网络上随处可见,我们可以通过一些方法获取,最简单的就是别人的 ...
- lrc歌词文件格式
一.lrc文件有什么作用 lrc文件就是一个文本文件,用来记录歌曲的歌词信息,使得播放歌曲时能够让歌词与声音同步显示,类似于电影字幕那种效果. 心情很丧时我们会听首歌陶冶一下情操,不知你是否注意过音乐 ...
随机推荐
- code::blocks编译多文件 没有定义的引用
code::blocks是一款据说灰常强大的IDE,以前虽然也经常使用,但一没用过高度功能,二来没用它写过工程性的东西,简单点说就是一个以上的源文件并且加入其他非标准的头文件,今天想做一个多文件的语法 ...
- python 循环
200 ? "200px" : this.width)!important;} --> 介绍 python中有两种循环,分别是for...in循环.while循环:for.. ...
- C#中的强制类型转换与as转换的区别
C#中的强制类型转换 例如有ClassA与ClassB两个类创建两个类的对象进行转换 1 2 ClassA a = new ClassA(); ClassB b = new ClassB(); 如果 ...
- PIL在windwos系统下Image.show无法显示图片问题的解决方法
环境:1.win7 64位 2.python 2.7.8 3.PIL-1.1.7.win32-py2.7 在运行一下例子时候出现问题: #-*-coding:utf-8-*- __author__ = ...
- OA系统权限管理设计(转载)
不论什么系统都离不开权限的管理,有一个好的权限管理模块,不仅使我们的系统操作自如,管理方便,也为系统加入亮点. l 不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是 ...
- 开始学习web前端技术
不能再蹉跎了,不能再徘徊了,不能再犹豫了,犹豫徘徊等于白来…… 感觉之前浪费了太多的岁月,必须得学习一门实用的技术来充实自己空虚的心情了. 想来想去网页应该是万金油的,大大小小多多少少都得用到.既然如 ...
- 【M21】利用重载技术避免隐式类型转换
1.考虑UPint 的加法+,UPint a, b, result; 为了使result = a+10; result= 10+a; 都能通过编译,操作符重载如下: const UPint opera ...
- 推荐图书-《SQL Server 2008商业智能完美解决方案》
内容简介 <SQL Server 2008商业智能完美解决方案>介绍如何使用Microsoft SQL Server 2008开发商业智能(BI)解决方案.<SQL Server 2 ...
- Codeforces Round #192 (Div. 1) C. Graph Reconstruction 随机化
C. Graph Reconstruction Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/3 ...
- iOS开发——新特性篇&swift新特性(__nullable和__nonnull)
swift新特性(__nullable和__nonnull) 最近在看老师写代码的时候经常遇到两个陌生的关键字,但是当我在我的电脑上敲得时候就是敲不出,后来才知道这是为了swift与OC混编的时候产生 ...