歌词数据解析、歌词滚动、歌词进度控制功能的实现(基于js-base64、lyric-parser、better-scroll)

1、需求分析

后台歌词接口返回的数据如下(base64字符串):

W3RpOua8lOWRmF0KW2FyOuiWm+S5i+iwpl0KW2FsOue7heWjq10KW2J5Ol0KW29mZnNldD
owXQpbMDA6MDAuNTZd5ryU5ZGYIC0g6Jab5LmL6LCmClswMDowMi40Ml3or43vvJrolpvk
uYvosKYKWzAwOjAzLjk5Xeabsu+8muiWm+S5i+iwpgpbMDA6MDUuMzhd57yW5puy77ya6Y
OR5LyfL+W8oOWuneWuhwpbMDA6MDcuNDVd5Yi25L2c5Lq677ya6LW16Iux5L+KClswMDow
OS4wOV3lkIjlo7DvvJrotbXoi7Hkv4oKWzAwOjEwLjQ4XeW9lemfs+W4iO+8mueOi+aZk+
a1twpbMDA6MTEuNzRdClswMDoxMi4zNF3mt7fpn7PluIjvvJrpso3plJAKWzAwOjEzLjg4X
eavjeW4puWkhOeQhuW3peeoi+W4iO+8mumyjemUkApbMDA6MTYuMTBdClswMDoyMS4yNV3n
roDljZXngrkKWzAwOjIyLjIxXQpbMDA6MjUuMTZd6K+06K+d55qE5pa55byP566A5Y2V54K
5ClswMDoyOC4yN10KWzAwOjMwLjIyXemAkui/m+eahOaDhee7quivt+ecgeeVpQpbMDA6Mz
MuNTdd5L2g5Y+I5LiN5piv5Liq5ryU5ZGYClswMDozNi4yN13liKvorr7orqHpgqPkupvmg
4XoioIKWzAwOjM5LjA4XQpbMDA6NDIuMjBd5rKh5oSP6KeBClswMDo0My43NF0KWzAwOjQ2
LjE3XeaIkeWPquaDs+eci+eci+S9oOaAjuS5iOWchgpbMDA6NDkuNDddClswMDo1MS43NF3
kvaDpmr7ov4fnmoTlpKrooajpnaIKWzAwOjU0LjYwXeWDj+ayoeWkqei1i+eahOa8lOWRmA
pbMDA6NTcuMjFd6KeC5LyX5LiA55y86IO955yL6KeBClswMDo1OS42OF0KWzAxOjAyLjQ2X
eivpemFjeWQiOS9oOa8lOWHuueahOaIkea8lOinhuiAjOS4jeingQpbMDE6MDcuMDJdClsw
MTowNy41Nl3lnKjpgLzkuIDkuKrmnIDniLHkvaDnmoTkurrljbPlhbTooajmvJQKWzAxOjE
yLjE5XQpbMDE6MTIuODZd5LuA5LmI5pe25YCZ5oiR5Lus5byA5aeL5pS26LW35LqG5bqV57 

解析成歌词并应用,实现歌词随着播放进度滚动,显示当前歌词,可以对歌词的进度进行控制(即改变歌曲进度,歌词会进行相应调整)(图1)

2、解决方案

使用到的库:js-base64、lyric-parser、better-scroll,相关API建议先到github了解一下。

在dependencies中添加这两个库,然后npm install 一下即可,需要使用时引入。

安装好依赖库后:

2.1、使用js-base64对歌词进行解析:

解析后的歌词信息变成了可以识别的字符串,如下:(图2)

2.2、使用lyric-parser解析歌词字符串,使其成为能使用的数据格式:

至此,歌词已被改成了我们需要的数据格式,如下:(图3)

2.3、应用歌词数据,以vue项目应用举例:

template:

<scroll class="lyric-wrapper" ref="lyricList" :data="currentLyric && currentLyric.lines">  <div>  <div class="lyric">  <p v-for="(line,index) in currentLyric.lines" ref="lyricLine"  :class="{'current':currentLineNum===index}"  class="text">{{line.txt}}</p>  </div>  </div>
</scroll> 

解释:scroll为本人之前写的一个组件,基于better-scroll,组件详情请看本人之前写的博客http://blog.csdn.net/fabulous1111/article/details/78848971,组件应用于此是为了实现歌词的滚动,给当前歌词绑定一个current类,用于将当前播放歌词显示成高亮状态。

methods:

使用到lyric-parser以及better-scroll,通过scrollToElement实现歌词的自动滚动相关API建议先到github了解一下:

  getLyric() {  // 调用项目中获取歌词的api,获取到的是使用js-base64转了格式后的歌词(如图2)   this.currentSong.getLyric().then((lyric) => {  // 新建Lyric-parser歌词对象  this.currentLyric = new Lyric(lyric, this.handleLyric  // 如果当前歌曲为播放状态,调用歌词对象的播放方法,播放歌词(滚动需结合better-scroll)  if (this.playing) {  this.currentLyric.play()  }  })  },  handleLyric({lineNum, txt}) {  this.currentLineNum = lineNum  // 若当前行大于5,开始滚动,以保歌词显示于中间位置  if (lineNum > 5) {  let lineEl = this.$refs.lyricLine[lineNum - 5]  // 结合better-scroll,滚动歌词  this.$refs.lyricList.scrollToElement(lineEl, 1000)  } else {  this.$refs.lyricList.scrollToElement(0, 0, 1000)  }  } 

3、其他相关操作:

3.1、歌曲变化时的清空操作

3.2、单曲循环模式下的处理:

3.3、歌曲暂停/播放时,歌词的暂停与播放

3.4、改变歌曲播放进度后,歌词的设置

转载于:https://www.cnblogs.com/catbrother/p/9181159.html

歌词数据解析、歌词滚动、歌词进度控制功能的实现(基于js-base64、lyric-parser、better-scroll),以vue项目为例...相关推荐

  1. 歌词数据解析、歌词滚动、歌词进度控制功能的实现(基于js-base64、lyric-parser、better-scroll),以vue项目为例

    歌词数据解析.歌词滚动.歌词进度控制功能的实现(基于js-base64.lyric-parser.better-scroll) 1.需求分析: 后台歌词接口返回的数据如下(base64字符串): W3 ...

  2. java 滚动歌词_歌词数据解析、歌词滚动、歌词进度控制功能的实现(基于js-base64、lyric-parser、better-scroll),以vue项目为例...

    歌词数据解析.歌词滚动.歌词进度控制功能的实现(基于js-base64.lyric-parser.better-scroll) 1.需求分析 后台歌词接口返回的数据如下(base64字符串): W3R ...

  3. .lrc java解析_lrc滚动歌词解析及显示

    lrc歌词格式是什么样的? lrc是英文lyric(歌词)的缩写,被用做歌词文件的扩展名.以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示.LRC 歌词是一种包含着":"形 ...

  4. php中文歌词,html如何制作滚动歌词

    html制作滚动歌词的方法:首先在标签里面写好编码格式,引入css样式和jQuery:然后放置播放器,代码为[]. 本教程操作环境:windows7系统.html5版,DELL G3电脑. html制 ...

  5. Swift 掌控Moya的网络请求、数据解析与缓存

    Moya 在Swift开发中起着重要的网络交互作用,但是还有不如之处,比如网络不可用时,返回的 Response 为 nil,这时还得去解析相应的 Error Codable 可以帮助我们快速的解析数 ...

  6. javascript,H5,jQuery,css“实现音乐歌词解析,歌词同步滚动,进度条拖拽、进度条同步,音量控制,歌词同步高亮的功能齐全的简易音乐播放器

    用js和HTML实现一个带歌词同步,以及进度条拖拽,音量控制的简单音乐播放器. 这个音乐播放器,可以实现歌词的滚动,进度条拖拽,音乐播放进度,音量控制等功能.,资源全为网上资源,直接复制代码,便能看到 ...

  7. 仿网易云网页版音乐播放器,实现歌词随歌曲进行滚动高亮

    引言 前几天在使用网易云网页版听歌时,看着那个页面的歌词随歌曲进行高亮,突然也想自己手动地去实现一下,于是呢,就仿照了网易云音乐的网页自己也写了个页面.效果图如下: 当然了,此处不做css的样式介绍, ...

  8. vue项目:歌词随歌曲同步滚动

    封装成对象,暴露出去共享使用 1.新建js文件 2.因为需要用到元素运动来实现歌词自上而下滚动的效果,又不想引用jquery增大js的加载,所有在对象内部封装了一个运动函数. 3.主要的函数是添加定时 ...

  9. android动手写平滑滚动歌词控件

    马上毕业了,前段时间一直忙自己的毕业设计和毕业论文,做的是一个android音乐播放器,今天特意抽出里面的一块功能来凑这篇博客--歌词的显示. 看看QQ音乐,歌词显示略屌,可惜我们的LRC文件并不能做 ...

最新文章

  1. safari java插件故障_safari flash插件故障怎么办 mac safari flash插件故障解决方法
  2. java字符串 n换行符_java切割字符串中的回车应注意是\n\r不是\n
  3. c读取txt文件内容并建立一个链表_C++链表实现学生信息管理系统
  4. Red Hat日志文件系统-ext3
  5. python使用英汉大字典离线获取单词释义
  6. 被国产机所迫?苹果或将每半年发布一次新iPhone
  7. ThinkPHP admin.php后台登录
  8. add in Web.config
  9. Origin2018安装与使用(整理中)
  10. 一线协议—ds18b20
  11. comsume(comsumer怎么读)
  12. php ios表情包,十分钟开发一款 iOS 表情包 App
  13. 昔日的手游大作,《无尽之剑》系列如今为何走向英雄末路?
  14. Docker(14) docker-compose安装Grafana Loki日志聚合系统
  15. 前端使用xlsx.core.min.js读取excel内容
  16. 华为认证证书的含金量如何?
  17. 龙芯+QtCreator+神通数据库+中标麒麟操作系统
  18. 云南大学软件学院c语言实验报告,云南大学 软件学院 C语言 所有实验代码.doc...
  19. OpenMP入门及基本用法
  20. maya计算机内存不足请保存,Maya渲染时提示内存不足的六种解决办法

热门文章

  1. Swift iOS : 模糊化
  2. GPS经纬度算附近有什么 --- GeoHash核心原理解析
  3. C++ ODB 框架(未实践使用)
  4. 1、Angular2 Component 组件
  5. C#正则提取HTML中img的url值
  6. CSharpGL(22)实现顺序无关的半透明渲染(Order-Independent-Transparency)
  7. ios水果风暴游戏源码项目下载
  8. VS013的单元测试去哪里了
  9. OC实例变量和属性-@synthesize与@property
  10. MSMQ: C# MSMQ编程问题