首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

歌词显示控件的实现(上)——歌词解析

分别是《歌词显示控件的实现上——歌词解析》和《歌词显示控件的实现下——歌词展示自定义View》。...而今天将要分享的是上篇,主要讲解关于*.lrc文件的解析。 我们本文的目的是将lrc格式的歌词文件进行解析,并能将其展示到界面。 先看下效果: ?...了解清楚歌词文件结构,我们就能对症下药: 02 — 开始解析 既然了解了歌词文件的组成部分,那么解析歌词文件也就不难,就是简单的文件内容读取: 1、首先获取*.lrc歌词文件的二进制流InputStream...下面就是实现歌词文件的解析工作: 1、实体类 首先,需要准备两个类主要用于歌词解析结果的缓存: LineInfo:歌词行信息:包含行开始时间和歌词行内容 LyricInfo:歌词信息:包含标题、歌手、专辑等等...03 — 解析验证 这里为了方便,我将歌词文件放在了assets下 ?

2K20

JavaScript 解析 lrc 歌词

最近打算做播放器,研究了下解析lrc歌词的算法,百度基本没有现成的,所以自己各种搜索各种折腾然后写了个~~~特分享给大家 我们看到的lrc歌词一般都是这样的: [ti:听妈妈的话] [ar:周杰伦] [...02:06.91]因为过两天你会在操场上捡到 [02:09.18]你会开始喜欢上流行歌 [02:11.35]因为张学友开始准备唱吻别 [03:58.07]美丽的白发 幸福总发芽 可以看到,歌词是由时间标签和歌词本身构成的...,至于那些歌曲信息这些我就忽略了 大概思路是: 按行把歌词拆成数组 遍历这个数组,将每一行的歌词和时间标签一道转换为数组 遍历数组的每一次循环要干的事情: 用正则匹配出这行的时间标签和对应的歌词 以时间标签为单位...,将标签转换为以秒为单位的时间再与该行对应的歌词一同push入数组 由于多时间标签的存在顺序会打乱,所以我们最后还要将保存歌词和时间的数组按时间从小到大排序 js代码如下: function parseLyric...var _lrc = lyric[i].replace(/[d{2}:d{2}((.|:)d{2})]/g,""); //过滤掉空行等非歌词正文部分

1.9K21

iOS 音乐播放器之锁屏歌词+歌词解析+锁屏效果

功能描述:锁屏歌曲信息、控制台远程控制音乐播放:暂停/播放、上一首/下一首、快进/快退、锁屏状态下列表菜单弹框和拖拽控制台的进度条调节进度(结合了QQ音乐和网易云音乐在锁屏状态下的效果)、歌词解析并随音乐滚动显示...skipBackwardEvent: (MPSkipIntervalCommandEvent *)skipEvent { NSLog(@"快进了 %f秒", skipEvent.interval); } 第二部分:歌词解析...歌词样式.png 根据上图的歌词样式,思路就是:先根据换行符“\n“分割字符串,获得包含每一行歌词字符串的数组,然后解析每一行歌词字符,获得时间点和对应的歌词,再用创建的歌词对象wslLrcEach来存储时间点和歌词...iOS11网易云音乐锁屏界面.PNG 更新于2018/3/7 上面提到 iOS11系统上 ,不能像以往那样显示锁屏歌词了,那锁屏歌词该怎么显示呢,网易云音乐给出了如下图的设计:她是把当前唱到的歌词放到了锁屏的副标题处...[songDict setObject:@"当前歌词" forKey:MPMediaItemPropertyAlbumTitle]; ? 网易云音乐锁屏歌词.PNG

2.7K70

100行代码 | 歌词解析

❝将歌词文件拖放到窗口自动解析歌词的小工具。去掉代码注释大概100多行左右。 ❞ ?   这里摘取周杰伦 - 告白气球.lrc歌词文件的一小段内容。...」,其标准格式为[分钟:秒钟:毫秒],如: [00:23.59]塞纳河畔 左岸的咖啡 [00:26.16]我手一杯 品尝你的美 0x02 歌词解析实现 LyricParser为歌词结构体,内容包含歌名...还包含一个共有函数parser,用于传入原始歌词内容并解析出对应的歌词信息。...结构体还包含_parse和parseContents私有成员函数,都是为解析歌词而服务。...拖拽歌词文件后解析歌词的结果放到m_lyricParser成员变量中,以用于refresh函数更新歌词内容: /* 拖动事件的释放操作事件 */ void dropEvent(QDropEvent *event

1.5K10

iOS 音乐播放器之锁屏歌词+歌词解析+锁屏效果

功能描述:锁屏歌曲信息、控制台远程控制音乐播放:暂停/播放、上一首/下一首、快进/快退、锁屏状态下列表菜单弹框和拖拽控制台的进度条调节进度(结合了QQ音乐和网易云音乐在锁屏状态下的效果)、歌词解析并随音乐滚动显示...skipBackwardEvent: (MPSkipIntervalCommandEvent *)skipEvent { NSLog(@"快进了 %f秒", skipEvent.interval); } 第二部分:歌词解析...[歌词样式.png] 根据上图的歌词样式,思路就是:先根据换行符“\n“分割字符串,获得包含每一行歌词字符串的数组,然后解析每一行歌词字符,获得时间点和对应的歌词,再用创建的歌词对象wslLrcEach...[iOS11网易云音乐锁屏界面.PNG] 更新于2018/3/7 上面提到 iOS11系统上 ,不能像以往那样显示锁屏歌词了,那锁屏歌词该怎么显示呢,网易云音乐给出了如下图的设计:她是把当前唱到的歌词放到了锁屏的副标题处...[songDict setObject:@"当前歌词" forKey:MPMediaItemPropertyAlbumTitle]; [网易云音乐锁屏歌词.PNG] [亲,赞一下,给个star.gif]

2.7K150

c语言解析xml文档

XML— 可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 一、什么是可扩展标记语言?...它是W3C的推荐标准。 二、可扩展标记语言和超文本标记语言之间的差异 它不是超文本标记语言的替代。 它是对超文本标记语言的补充。...Libxml2 是个C语言的XML程式库,能简单方便的提供对XML文件的各种操作,并且支持XPATH查询,及部分的支持XSLT转换等功能。...Libxml2的下载地址是 http://xmlsoft.org/ C的xml编程-libxml2(函数总结篇) ————————————————————————————————–...(doc); //释放解析文档时获取到的内存 l intnRel = xmlSaveFile(“-“,doc); //将文档以默认方式存入一个文件。

2.6K20

C语言中.h和.c文件解析

:理论上来说C文件与头文件里的内容,只要是C语言所支持的,无论写什么都可以的,比如你在头文件中写函数体,只要在任何一个C文件包含此头文件就可以将这个函数编译成目标文件的一部分(编译是以C文件为单位的,如果不在任何...当然这些东东都成了C标准,就算不看人家的头文件,你一样可以知道怎么使用   c语言中.c和.h文件的困惑   本质上没有任何区别。...main在运行时就会找到这个定义了这个函数的aaa.c文件。   这是因为:   main函数为标准C/C++的程序入口,编译器会先找到该函数所在的文件。   ...正确的概念是:从C编译器角度看,.h和.c皆是浮云,就是改名为.txt、.doc也没有大的分别。换句话说,就是.h和.c没啥必然联系。....但是如果.c中的函数也需要调用同个.c中的其它函数,那么这个.c往往会include同名的.h,这样就不需要为声明和调用顺序而发愁了(C语言要求使用之前必须声明,而include同名.h一般会放在.c的开头

2.9K40

C语言】 全面解析占位符

C语言编程中,占位符是一种常用的编程工具,通常用于表示即将填入的某个值。占位符不仅在格式化输出中非常有用,而且在调试和开发过程中也起到了重要作用。...本文将详细讲述C语言中的占位符,包括其定义、用法、注意事项和常见错误,确保读者能够全面理解和掌握这一编程工具。 什么是占位符? 占位符是一种特殊的符号或字符串,用于在输出格式中表示将来需要填入的值。...在C语言中,占位符通常用于printf、sprintf等函数中,以便按照特定格式输出变量的值。例如,%d用于表示一个整数,%s用于表示一个字符串。...通过本文的介绍,希望读者能够全面理解和掌握C语言中的占位符,并在实际编程中灵活运用这一工具。 占位符不仅仅是一个简单的格式化工具,它在编程的各个方面都有着广泛的应用。...希望本文能够帮助读者深入理解占位符,并在C语言编程中游刃有余地使用它。

18110

C语言的main函数解析

C/C++ 中从来没有定义过void main( ) 。...has been C++, nor has it even been C.”这可能是因为 在 CC++ 中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。...在本文的最后,测试一下: test.c: #include  int main() {     printf("c 语言 ");     return 11.1;  } 在终端执行如下.../a.out && echo "hello world"  #&&与运算,前面为真,才会执行后边的 c 语言 可以看出,操作系统认为main函数执行失败,因为main函数的返回值是11 ➜  testSigpipe.../a.out && echo "hello world" #hello c 语言 hello world 可以看出,正如我们所期望的一样,main函数返回0,代表函数正常退出,执行成功;返回非0,代表函数出先异常

2.6K88
领券