前端JS特效第15波:HTML5音乐播放器带歌词

warning: 这篇文章距离上次修改已过190天,其中的内容可能已经有所变动。

以下是一个简单的HTML5音乐播放器示例,它包括歌曲信息和歌词显示功能。




<!DOCTYPE html>
<html>
<head>
    <title>HTML5 音乐播放器</title>
    <style>
        #audioPlayer {
            width: 400px;
            margin: auto;
            text-align: center;
        }
        #lyrics {
            width: 400px;
            margin: auto;
            text-align: center;
            color: #fff;
            font-size: 20px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <div id="audioPlayer">
        <audio id="song" controls preload="auto">
            <source src="your-song.mp3" type="audio/mp3">
            对不起,您的浏览器不支持 audio 元素。
        </audio>
        <div id="lyrics">
            歌词加载中...
        </div>
    </div>
 
    <script>
        window.onload = function() {
            var audio = document.getElementById('song');
            var lyrics = document.getElementById('lyrics');
            var currentLyrics = '';
            var nextLyrics = '';
            var lyricsArray = ['这里是歌词1', '这里是歌词2', '这里是歌词3']; // 歌词数组
            var currentTime = 0;
 
            // 更新歌词函数
            function updateLyrics() {
                currentLyrics = lyricsArray[currentTime].replace(/^\s+|\s+$/g, ''); // 去除空白字符
                nextLyrics = lyricsArray[currentTime + 1] ? lyricsArray[currentTime + 1].replace(/^\s+|\s+$/g, '') : '';
                if (audio.currentTime >= currentTime && audio.currentTime < nextLyrics.length ? nextLyrics : currentLyrics) {
                    lyrics.textContent = currentLyrics;
                }
            }
 
            // 监听时间更新事件
            audio.addEventListener('timeupdate', function() {
                // 每500毫秒检查一次歌词
                if (audio.currentTime % 5 === 0) {
                    currentTime = Math.floor(audio.currentTime);
                    updateLyrics();
                }
            });
 
            // 初始化歌词显示
            updateLyrics();
        };
    </script>
</body>
</html>

在这个示例中,我们首先定义了一个简单的HTML结构,其中包括一个audio元素和一个用于显示歌词的div。然后,我们使用JavaScript在页面加载完成时初始化音乐播放器。我们创建了一个更新歌词的函数updateLyrics,并且在timeupdate事件中调用它,以便在音乐播放时更新歌词。

注意:这个示例假设歌词数组lyricsArray已经按照对应的音乐时间点顺序填充了歌词。在实际应用中,歌词可能需要从外部文件加载,或者通过API获取。此外,歌词的同步可能需要更复杂的逻辑,例如考虑歌词的高亮显示、换行处理等。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日