使用node实现歌词滚动输出

本文介绍了如何使用Node.js结合fs、path和iconv-lite模块实现歌词滚动打印。通过读取LRC歌词文件,解析时间戳,并利用setTimeout实现歌词随着时间滚动的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用node实现歌词滚动输出

运用fs,path,iconv三个模块实现歌词滚动打印.
// 动态显示歌词

const fs = require(‘fs’);
const path = require(‘path’);
const iconv = require(‘iconv-lite’);

//获取字幕文件路径
fs.readFile(path.join(__dirname, ‘./../lyrics/血染的风采.lrc’), (error, data) => {
var lines = iconv.decode(data, ‘gbk’).split(‘\n’);
// console.log(lines.length);
var regex = /[(\d{2}):(\d{2}).(\d{2})]\s(.+)/;

var begin = new Date().getTime();
// 遍历
lines.forEach((line) => {
// [00:32.67] 也许我告别 将不再回来
var matches = regex.exec(line);
if (matches) {
var m = parseFloat(matches[1]);
var s = parseFloat(matches[2]);
var f = parseFloat(matches[3]);
var lyric = matches[4]; // 当前行歌词不是立即执行
// 由于下达输出任务的时刻不同
var offset = new Date().getTime() - begin;
setTimeout(() => {
console.log(lyric);
}, m * 60 * 1000 + s * 1000 + f - offset);
} else {
// 不是一行歌词
console.log(lin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值