HTML随音乐播放时间自动歌词,python 根据歌词的时间(LRC文件),生成H5 audio按句播放器...

本文主要是介绍HTML随音乐播放时间自动歌词,python 根据歌词的时间(LRC文件),生成H5 audio按句播放器...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、效果图

fb1eb17ddaaffee68b13e7d2ad422f12.png

2、Python代码:

# coding=UTF-8

import codecs

import os

import re

# 正则校验是否为浮点数字

def is_number(num):

pattern = re.compile(r'^[-+]?[-0-9]\d*\.\d*|[-+]?\.?[0-9]\d*$')

result = pattern.match(num)

if result:

return True

else:

return False

# 解析歌词文件为结构化

def lrcParser(file_path):

new = []

f = codecs.open(file_path, 'r', encoding='utf-8')

lines = f.readlines()

f.close()

for i in xrange(len(lines)):

if lines[i]==0 :

continue

startTimes=lines[i-1].split("[")[1].split("]")[0].split(":")

endTimes=lines[i].split("[")[1].split("]")[0].split(":")

sentenceTxts =str(i-1)+":["+startTimes[1]+"] "+ lines[i-1].split("]")[1]

if is_number(startTimes[1]) and is_number(endTimes[1]) :

startPoint=-1;

if is_number(startTimes[0]):

startPoint=float(startTimes[0])*60+float(startTimes[1])

else:

startPoint = float(startTimes[1])

endPoint=float(endTimes[0])*60+float(endTimes[1])

new.append(str(startPoint )+","+str(endPoint)+","+sentenceTxts)

else:

new.append("0,0,"+sentenceTxts)

return new;

# 生成每个歌词控制语句

def generateSentenceControl(lrcs):

controlList=[]

for i in xrange(len(lrcs)):

lines=lrcs[i].split(",")

control=''+lines[2]+'\n'

controlList.append(control)

return controlList;

def generateHtml(lrcs_arry,mp3):

html=[]

html.append(u"\n");

html.append(u"\n");

html.append(u"\n

");

html.append(u"\n ");

html.append(u"\n ");

html.append(u"\n

"+mp3+"");

html.append(u"\n");

html.append(u"\n

");

html.append(u"\n
");

html.append(u"\n\n\n")

for i in xrange(len(lrcs_arry)):

html.append(lrcs_arry[i])

html.append(u"\n

html.append(u"\n// https://stackoverflow.com/questions/19355952/make-html5-video-stop-at-indicated-time");

html.append(u"\nvar myAud=document.getElementById(\'audio1\');");

html.append(u"\nfunction setCurEndTimeAndPlay(startTime,endTime){");

html.append(u"\n// 设置当前时间");

html.append(u"\nmyAud.currentTime=startTime;");

html.append(u"\nvar pausing_function = function(){");

html.append(u"\n// 播放");

html.append(u"\nmyAud.play();");

html.append(u"\n if(myAud.currentTime >= endTime) {");

html.append(u"\n myAud.pause();");

html.append(u"\n // remove the event listener after you paused the playback");

html.append(u"\n myAud.removeEventListener(\'timeupdate\',pausing_function);");

html.append(u"\n }");

html.append(u"\n};");

html.append(u"\nmyAud.addEventListener(\'timeupdate\', pausing_function); ");

html.append(u"\n } ");

html.append(u"\n ");

html.append(u"\n");

html.append(u"\n");

return html

def save(html,file):

f = codecs.open(file, 'w', encoding='utf-8')

f.writelines(html)

f.close()

if __name__ == '__main__':

path = u'/Users/jifeng/Downloads/学习音乐/';

mp3=u'红玫瑰.mp3';

lrc_file = path + u'红玫瑰.lrc' # 放原txt文件的目录,注意有的字符需要转义

result = path + u'红玫瑰.lrc.html' # 结果文件名

lrcs_arry = lrcParser(lrc_file) # 解析歌词文件

controlList = generateSentenceControl(lrcs_arry) # 生产行控制语句

html=generateHtml(controlList,mp3)

save(html,result)

3、获取歌词LRC

4、代码下载地址

这篇关于HTML随音乐播放时间自动歌词,python 根据歌词的时间(LRC文件),生成H5 audio按句播放器...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/306601

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma