HTML5实现歌词同步

开篇

HTML5的最强大之处莫过于对媒体文件的处理,如利用一个简单的vedio标签就能够实现视频播放。相似地,在HTML5中也有相应的处理音频文件的标签,那就是audio标签

在线Demo

audio标签

实现一个audio标签非常easy,相应的html代码例如以下:

<audio id="player"
    src="music/我在人民广场吃炸鸡.mp3"
    autoplay controls>
</audio>

上述代码不须要一行js脚本就能实现音乐播放。当中有三个经常使用的属性,分别为:音频源文件,是否自己主动播放以及是否显示播放器控件。

因为没有不论什么ui的展现,audio标签在chrome的默认风格例如以下图:

能够看出,一个主要的播放器还包含了显示当前时间。播放,暂停,快进快退等功能。这些功能都决定了怎样非常好的实现歌词同步(兴许介绍)。

既然这么easy就就能播放音乐,那作为一项前端的技术。audio标签在各个浏览器中的兼容性又是怎样的呢?

Browser Compatibility

能够看出,各大浏览器对audio标签基本功能都支持。仅仅是在细微的特性上表现不一,可是这些主要的功能已经足已做出一个好的播放器。

歌词

一般标准的lyric文件是由[时间]内容的tag标签组成,例如以下图:

为了更精确的展现每一个字在每句歌词中的时间,又出现了特殊的歌词形式,例如以下:

这样的歌词的格式的最好样例就是QRC歌词文件(如QQ音乐播放器):

为了描写叙述简单,本文仅以最简单的lyric格式作为说明。解说怎样分离歌词进行歌词同步。

例如以下,为一首歌曲的歌词文件:

现对该歌词文件作一下处理:

  • 1.以行为单位拆分每一句歌词
  • 2.将没句歌词的时间tag和内容分离
  • 3.将时间转换为分钟

转换过程较为简单,仅仅需一个简单的正则匹配,步骤例如以下:

分离出来的[时间,内容]能够与audio当前的播放时间进行对照,若须要显示相应的歌词则将该行高亮,同一时候每次更新相应DOM节点的top则可在视觉上达到滚动效果。

制作歌词ui。

  • 1.定义一个现实歌词的区域,加入audio控件

  • 2.加入背景图片,制作标题边框

  • 3.加入歌词

到此。歌词同步以及ui绘制所有完成。

在线Demo

PS:CSDN的markdown样式太水了,能够看看以下其它的链接。

Blog同步

简书同步

时间: 2025-01-02 17:39:58

HTML5实现歌词同步的相关文章

HTML5音频播放,歌词同步,及视频播放功能(JPlayer、JWPlayer、VideoJS)

近期项目中用到音频视频播放.所以就写了一个demo: 这个是JPlayer插件的视频播放: 这个是音频播放,歌词同步: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <!--注意:在IIS上配置的时候,需加入mime映射,否则歌词出不来.在IIS列表中找到"MIME类型".进行加入.lrc类型;.mp4类型文件--> <head>     <

我的项目7 js 实现歌词同步(额,小小的效果)

在项目中需要做一个播放器,还要实现歌词同步的效果,就跟现在搜狗音乐的歌词同步差不多,在网上查了一些关于这方面的,整理了一下,在这里,其实用这个方法可以吗? <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" src="js/jqu

安卓音乐播放器中歌词同步问题

音乐文件是.lrc格式的,以一首歌曲为例, [ti:回忆的沙漏][ar:邓紫棋][al:G.E.M.][by:][offset:0][00:02.50]回忆的沙漏 - G.E.M. 邓紫棋[00:04.62]词:庭竹[00:05.72]曲:G.E.M.[00:15.03]拼图一片片失落[00:18.56]像枫叶的冷漠[00:21.87]墙上的钟[00:23.79]默默数着寂寞[00:29.30]咖啡飘散过香味[00:33.06]剩苦涩陪着我[00:36.68]想念的心[00:39.44]埋葬我在

linux 下 python 调用 mplayer 解析歌词同步播放显示

加载同目录同名歌词同步显示 #!/usr/bin/python # -*- coding: utf-8 -*- import sys, os, time, subprocess, re, chardet def load_lrc(lrc_file):     try:         lrc_contains = open(lrc_file, 'rb').read()         encoding = chardet.detect(lrc_contains)['encoding']     

Jplayer歌词同步显示插件

http://blog.csdn.net/wk313753744/article/details/38758317 1.该插件是一个jquery的编写的跟jplayer实现歌词同步的插件,最终效果如图: 2.首先引入jplayer的相关的js库和样式文件. [html] view plaincopy <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link

AS3 歌词同步

这里实例素材: 我们不一样.lrc 我们不一样.mp3 歌词同步其实就是靠lrc文本文件,打开它,可以看到时间点和对应的歌词. 打开lrc内容如下: [ti:我们不一样][ar:大壮][al:][by:错爱QQ][t_time:(04:30)][00:00.00]歌词千寻 www.lrcgc.com[00:01.11]我们不一样[00:05.07]演唱:大壮[00:08.26]词曲:高进[00:11.29]编曲:张亮[00:14.85]缩混:侯春阳[00:20.04][00:34.81]这么多年

Android练习项目 Mp3播放器实现 歌词同步播放(四)

其实到后面就需要我们如何显示歌词,对于歌词的同步显示还是比较好实现的,主要通过判断当前播放的时间和每个结点的歌词的时间的大小,来同步对应到结点的数据,现在就是如何来实现这个问题. 其实,这个时候就需要自定义控件来实现. 第一步需要自定义View的属性. 第二步需要实现在View的构造方法中获得我们自定义的属性. 主要通过初始化函数,init() 第三步,重写ondraw函数. LrcView.java package com.flashmusic.View; import android.con

云展网教程 | 设置flash和html5的配置同步

云展网可以选择flash或者html5的阅读方式,两种阅读模式是可以随时切换的,只要编辑已经上传好的文档选择您要的阅读模式. 在设置一栏勾选同步配置到FLASH或HTML5,在其中一个阅读模式下设置的模板功能会应用到另一个阅读模式例如背景图片或者背景音乐. 如果没有勾选该选项,在这个阅读模式的设置不会应用过去. 注意:如果您电脑版是FLASH阅读模式设置了背景音乐,没有勾选同步配置的情况下,手机阅读杂志会自动转跳到html5阅读模式,由于html5阅读模式没有同步设置,手机上听不见背景音乐的哦.

手机影音第十七天,实现歌词同步

代码已托管到码云,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 效果图: 有一个小的遗憾,就是该MP3文件和歌词文件要在同一路径下,才能读取到歌词,否则读取不到录音文件. 将录音文件发到这里,是.lrc格式的文件,其实TXT文件的也行:如果在手机上显示是乱码的话,就改一下文件的编码为Unicode,再尝试下. [ti:北京北京] [00:00.05]献给我最爱的老婆 --常长丽 [00:02.17]歌曲名:北京北京 [00