MP3音频歌词添加背景

前言

要实现一个音频播放到当前句时,添加背景颜色,类似歌词的高亮显示,参考了一些别人的代码,终于完成了,记录一下。

一、html

	<div>
        <audio id="audio" controls preload="auto" src="kcjl.mp3"></audio>   
    </div>
	<textarea id="gc" name="textfield" style="display:none;">
        [00:00.000]考试纪律
        [00:00.890]1.学生应按考试时间提前十分钟进入指定考场,按规定座次就座,并将学生证(身份证、准考证)置课桌左上角待查。
        [00:14.017]2.考生的试卷、答题纸、草稿纸由监考人员统一发放,考试结束时统一收回,不准带出考场。
        [00:25.173]3.除文具、计算器外,座位内外不准放置任何教材、参考资料、练习本、草稿纸等。
        [00:35.876]4.不准携带手机、小灵通等通信设备;不准携带快译通、掌上电脑、电子记事簿等具有存储功能的电子器材.
		[00:46.276]5.学生拿到试卷后,首先填写姓名、学号。不得多拿试卷,不得拆散装订好的试卷。
        [00:56.428]6.学生应保持考场肃静,不得在考场附近及走廊内讲话、喧哗。
		[01:04.526]7.试开始三十分钟后至考试结束前十五分钟学生可以交卷,提前交卷者须将试卷送交监考人员,并立即退出考场。
		[01:16.526]8.考试时间到点,停止答卷,由监考人员收卷点清,宣布可以离场后方可离开考场。
    </textarea>
    <ul id="content" style="overflow: hidden;">

    </ul>
	<script src="jquery-1.12.4.js"></script>
	<script src="kcjv.js"></script>

二、css

.back-color{
	background-color: #f00;
}

三、js

var audioArray = new Array(); 
function pushContent () {
	var gc = document.getElementById('gc').innerText;
	var gcArr = gc.split("\n");  
	$.each(gcArr, function (i, item) {
		var t = item.substring(item.indexOf("[") + 1, item.indexOf("]"));
		audioArray.push({
			t: (t.split(":")[0] * 60 + parseFloat(t.split(":")[1])).toFixed(3),
			c: item.substring(item.indexOf("]") + 1, item.length)
		});
	});
	var ul = $("#content");
	$.each(audioArray, function (i, item) {
		var li = $("<li style='list-style: none;'>");
		li.html(item.c);
		ul.append(li);
	});
}
pushContent();
var lineNo = 0;
var audio = document.getElementById("audio");
audio.ontimeupdate = function () 
{
	if (lineNo == audioArray.length - 1 && audio.currentTime.toFixed(3) >= parseFloat(audioArray[lineNo].t)) {
		lineHeight(lineNo);
	}
	if (lineNo < medisArray.length - 1) {
		if (parseFloat(audioArray[lineNo].t) <= audio.currentTime.toFixed(3) &&
			audio.currentTime.toFixed(3) <= parseFloat(audioArray[lineNo + 1].t)) {
			lineHeight(lineNo);
			lineNo++;
		}
	}
};
function lineHeight(lineno){
	var nowline = $("#content").find("li").get(lineno);
	$(nowline).siblings("li").removeClass("back-color") ;
	$(nowline).addClass("back-color");
}

参考链接:https://blog.csdn.net/maid_04/article/details/80849563

实现效果

在这里插入图片描述

后记

1.如果你需要文字转换语音的工具:文字转语音工具
2.如果你需要格式工厂将音频转成MP3格式:格式工厂FormatFactory_5.7.1.exe
3.完整版代码下载:考场纪律音频更改背景完整版.zip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值